Scala的sealed关键字

sealed 关键字表示,其修饰的trait只能在当前文件里头被继承编程

sealed trait Answer
case object Yes extends Answer
case object No extends Answer


sealed abstract 表示,其修饰的class,只能在当前文件里头被继承scala

def process(request:Trade){
      request match{
        case Buy(name) => println("buy:"+name)
        case Sale(name) => println("sale:"+name)
      }
   }
   
   val op = Buy("IBM")
   process(op)


一般用在case class,case class 有两个特色:一、不用new,用括号便可产生实例 二、构造器参数默认是valcode

用sealed修饰这样作的目的是告诉scala编译器在检查模式匹配的时候,让scala知道这些case的全部状况,scala就可以在编译的时候进行检查,看你写的代码是否有没有漏掉什么没case到,减小编程的错误。继承


如上例子,若是没有case sale的话,会警告,match may not be exhaustive. It would failed on the following input:Sale(_)input

相关文章
相关标签/搜索