pr1*_*001 4 scala collect option partialfunction
我想我错过了一些东西:
scala> Some(1) collect ({ case n if n > 0 => n + 1; case _ => 0})
res0: Option[Int] = Some(2)
scala> None collect ({ case n if n > 0 => n + 1; case _ => 0})
<console>:6: error: value > is not a member of Nothing
None collect ({ case n if n > 0 => n + 1; case _ => 0})
^
<console>:6: error: value + is not a member of Nothing
None collect ({ case n if n > 0 => n + 1; case _ => 0})
Run Code Online (Sandbox Code Playgroud)
为什么会发生这种错误?我想我误解了collect工作原理......
Dav*_*ith 14
除非您指定,否则文字None是类型Option[Nothing].这是必要的,因为None必须是所有类型Option [_]的有效成员.如果你改写了
(None:Option[Int]) collect ({ case n if n > 0 => n + 1; case _ => 0})
Run Code Online (Sandbox Code Playgroud)
要么
val x:Option[Int] = None
x collect ({ case n if n > 0 => n + 1; case _ => 0})
Run Code Online (Sandbox Code Playgroud)
那么编译器就能输入检查你的收费电话