一、Option中的sealed關鍵字解析
sealed abstract class Option[+A] extends Product with Serializable {...} //注意這裏的sealed關鍵字
final case class Some[+A](x: A) extends Option[A] {...}
case object None extends Option[Nothing] {...}
sealed關鍵字:
sealed的意思是封閉的、密封的
這個關鍵字要求:Option的子類(包括case class 和case object)都必須在同樣一個文件中
這個關鍵字的好處:用Option的子類(包括case class 和case object)來進行模式匹配的時候,編譯器可以幫我們進行檢查,檢查是否所有的匹配選項都已經列入到case中
二、Option使用內幕實戰解析
package ce.scala.pp
object Option_Internal_31 {
def main(args : Array[String] ) : Unit = {
//7
val scores = Map("Alice" -> 99, "spark" -> 100)
scores.get("Alice") match{
case Some(score) => println(score)
case None => println("no score")
}
}
}
輸出:99
參考資料來源於大數據夢工廠 深入淺出scala 第31講 由王家林老師講解