【问题标题】:Illegal Start of Simple Expression: Option Type and Ellipsis简单表达式的非法开头:选项类型和省略号
【发布时间】:2015-05-25 22:13:28
【问题描述】:

Scala 新手,刚开始学习 scala.Option 备忘单。但是,此代码在 sbt 控制台中引发错误。

def option[A, X](o: Option[A])(none: => X, some: => A => X): X = ...

错误是

错误:简单表达式的非法开始

向上箭头指向省略号。修复似乎很简单,但作为一个新手,它目前让我难以理解

【问题讨论】:

  • = ... 不是有效的函数声明。要么你实现你使用 ??? 的函数体,使它“尚未实现”(编译,但在运行时抛出异常)。
  • 谢谢。 ??? 成功了。另外,在更仔细地查看示例后,作者似乎没有参与一些代码的运行。

标签: scala pattern-matching ellipsis


【解决方案1】:

... 不是有效的 Scala 表达式。如果你想要一个具有“未知”实现的函数,你可以使用???:

def option[A, X](o: Option[A])(none: => X, some: => A => X): X = ???

此函数的目标显然是将函数作为参数并根据选项的内容应用nonesome。您可以使用模式匹配来实现它:

def option[A, X](o: Option[A])(none: => X, some: => A => X): X = o match {
  case Some(a) => some(a)
  case None => none
}

【讨论】:

  • 或者使用现有的.fold:o.fold(none)(some)。顺便说一句,我会写 A => B 而不是 => A => B
猜你喜欢
  • 2018-08-16
  • 2018-04-30
  • 1970-01-01
  • 2023-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-06
  • 2014-02-16
相关资源
最近更新 更多