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

来源:互联网 发布:易考吧软件下载 编辑:程序博客网 时间:2024/06/05 13:26

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

阅读全文
0 0
原创粉丝点击