基本

Option 是一个包含单个值或根本没有值的数据结构。Option 可以被认为是零个或一个元素的集合。

选项是一个有两个孩子的抽象类:SomeNone

Some 包含单个值,None 不包含任何值。

Option 在表达式中非常有用,否则会使用 null 来表示缺少具体值。这可以防止 NullPointerException,并允许使用组合器(如 MapFlatMap 等)组合许多可能无法返回值的表达式。

地图示例

val countries = Map(
  "USA" -> "Washington",
  "UK" -> "London",
  "Germany" -> "Berlin",
  "Netherlands" -> "Amsterdam",
  "Japan" -> "Tokyo"
)
    
println(countries.get("USA")) // Some(Washington)
println(countries.get("France")) // None
println(countries.get("USA").get) // Washington
println(countries.get("France").get) // Error: NoSuchElementException
println(countries.get("USA").getOrElse("Nope")) // Washington
println(countries.get("France").getOrElse("Nope")) // Nope

Option[A]密封的,因此不能延长。因此它的语义是稳定的,可以依赖。