源码
sealed abstract class Option[+A] extends Product with Serializable
………………
final case class Some[+A](x: A) extends Option[A] {
def isEmpty = false
def get = x
}
case object None extends Option[Nothing] {
def isEmpty = true
def get = throw new NoSuchElementException("None.get")
}
分析:
Option是一个抽象类
None 和 Some 继承Option
分析
val myMap: Map[String, String] = Map("key1" -> "value")
val value1: Option[String] = myMap.get("key1") // @1
val value2: Option[String] = myMap.get("key2") // @2
println(value1) // Some("value1")
println(value2) // None
对于@1和@2而言,无论取出来的结果是Some和None都可以赋值给Option类型的变量。因为Option是Some和None的父类。
对于@1而言,取出来的是Some
对于@2而言,取出来的是None