scala教程:Option、Some、None的作用,避免使用null

说明

为了避免使用 null,以及 避免 非 null 校验,scala推荐使用 Option、Some、None

使用

  • Option:用于声明泛型

  • Some:是 Option 的子类,当有值时,用 Some(x) 封装

  • None:是 Option 的子类,当 值为null 时,用 None

取值方法1

  • getOrElse(默认值):

    • Some.getOrElse(默认值):返回 封装的值

    • None.getOrElse(默认值):返回 默认值

取值方法2

  • get:

    • Some.get:返回 封装的值

    • None.get:抛错:throw new NoSuchElementException("None.get")

例子

val l: List[Option[Int]] = List(Some(1), Some(2), None)

var sum=0
for(i <- l){
  // 避免null,也不需要做非null校验
  println(i+"--"+i.getOrElse(0))
  sum+=i.getOrElse(0)
}

println("sum=="+sum)

执行结果:

some(1)--1
some(2)--2
None--0