31.Option使用和实现内幕源码揭秘

xiaoxiao2021-02-28  73

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

转载请注明原文地址: https://www.6miu.com/read-51559.html

最新回复(0)