基本

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]密封的,因此不能延長。因此它的語義是穩定的,可以依賴。