31.Option使用和實現內幕源碼揭祕

一、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講 由王家林老師講解

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章