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讲 由王家林老师讲解

你可能感兴趣的:(scala)