基本
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]
是密封的,因此不能延长。因此它的语义是稳定的,可以依赖。