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