Scala的option对象
- 语义
语义: 表示值要么存在要么不存在
解决了多年java空指针问题
- some
语法: Some[+A](x: A)
不为空
源码
final case class Some[+A](x: A) extends Option[A] {
def isEmpty = false
def get = x
}
- none
语法: None
为空
源码
case object None extends Option[Nothing] {
def isEmpty = true
def get = throw new NoSuchElementException("None.get")
}
- isDefined
语法: .isDefined
有值为true
- isEmply
语法: .isEmply
空值为true
- get
语法 : op.get
传回值
some时返回为结果
None时返回为NoSuchElementException(“None.get”)
- 例子
def main(args: Array[String]): Unit = {
val op: Option[Double] = sqrt(-9)
if (op.isDefined) {
println(op.get)
} else {
println("没有平方根")
}
}
def sqrt(n: Double) = {
if (n >= 0) Some(math.sqrt(n)) //不为空
else None //为空
}
def get: Option[Int] = None