Scala的sealed关键字

Scala中sealed关键字可以修饰类和特质,其主要有2个作用:

  • 其修饰的trait,class只能在当前文件里面被继承
  • 在检查模式匹配的时候,用sealed修饰目的是让scala知道这些case的所有情况,scala就能够在编译的时候进行检查,看你写的代码是否有没有漏掉什么没case到,减少编程的错误。

比如下面的代码,声明了两个trait,其中Test2是sealed声明:

trait Test1{}
sealed trait Test2{}

case class A1() extends Test1{}
case class B1() extends Test1{}
case class C1() extends Test1{}

case class A2() extends Test2{}
case class B2() extends Test2{}
case class C2() extends Test2{}

运行代码测试:

object TraitTest {
  def main(args: Array[String]) {
    val x:Test1 = new B1()
    x match {
      case x @ A1() => println("A1")
      case x @ B1() => println("B1")
    }
  }
}

上述代码运行无异常

object TraitTest1 {
  def main(args: Array[String]) {
    val x:Test2 = new B2()
    x match {
      case x @ A2() => println("A2")
      case x @ B2() => println("B2")
//      case x @ C2() => println("C2")
    }
  }
}

上述代码如果注释掉的代码没有打开,则会如下警告:

Warning:(35, 5) match may not be exhaustive.
It would fail on the following input: C2()
    x match {

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值