2015-05-25 16 views
0

新来的Scala和刚开始scala.Option备忘单。但是,这段代码在sbt控制台中抛出一个错误。简单表达式的非法开始:选项类型和省略号

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

该错误是

error: illegal start of simple expression

向上箭头指向的省略号。修复似乎很简单,但作为一个新手,它目前没有我

+1

'= ...'不是有效的函数声明。要么你实现你使用'???'的函数体来使它'尚未实现'(编译,但在运行时抛出异常)。 – cchantep

+0

谢谢。 '''做了诀窍。另外,仔细查看示例之后,似乎作者没有参加一些要运行的代码。 – user3465296

回答

2

...是不是一个有效的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 
} 
+0

或使用现有的'.fold':'o.fold(none)(some)'。顺便说一句,我会写'A => B'而不是'=> A => B'。 – cchantep