基本
Option
是一個包含單個值或根本沒有值的資料結構。Option
可以被認為是零個或一個元素的集合。
選項是一個有兩個孩子的抽象類:Some
和 None
。
Some
包含單個值,None
不包含任何值。
Option
在表示式中非常有用,否則會使用 null
來表示缺少具體值。這可以防止 NullPointerException
,並允許使用組合器(如 Map
,FlatMap
等)組合許多可能無法返回值的表示式。
地圖示例
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]
是密封的,因此不能延長。因此它的語義是穩定的,可以依賴。