好的Scala实际上只有一个空值:None.不要使用null(除了与现有Java代码的向后兼容性).
关于为什么Option[T]有用,有很多答案.例如:看到这个.
简短版本:
它使可选性质成为明确的签名.以下明确指出我们预计t可能是"空":
def f(t: Option[T])
Run Code Online (Sandbox Code Playgroud)
你不必操作前为null检查:(i: Option[Int]) => i.map(_ + 1)正常工作是否i是Some(5)或None,并保留Option包装,以表明输入可能已经None(和,因此,输出可能是None也).
def f(i: Option[Int]) = i.map(_ + 1)
f(Some(5)) // Some(6)
f(None) // None
Run Code Online (Sandbox Code Playgroud)
您可以使用其他Options或集合轻松编写它们:
val a: Option[Int] = Some(1)
val b: Option[Int] = Some(6)
val c: Option[Int] = Some(5)
val d: Option[Int] = None
for(x <- a; y <- b; z <- c) yield x + y + z // Some(12)
for(x <- a; y <- d; z <- c) yield x + y + z // None
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
480 次 |
| 最近记录: |