加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

斯卡拉 – 缺少非详尽匹配的警告

发布时间:2020-12-16 18:51:23 所属栏目:安全 来源:网络整理
导读:启用-unchecked时,为什么以下不会产生警告: object Order { sealed trait EntryOption case object EmptyEntry extends EntryOption trait Entry extends EntryOption def isEmpty(a: EntryOption): Boolean = a match { case EmptyEntry = true// case _:
启用-unchecked时,为什么以下不会产生警告:

object Order {
   sealed trait EntryOption
   case object EmptyEntry extends EntryOption
   trait Entry extends EntryOption

   def isEmpty(a: EntryOption): Boolean = a match {
      case EmptyEntry => true
//    case _: Entry   => false
   }
}

看来我在Scala 2.8.0的日子里确切地说是same problem before,没有足够的答案.

编辑

@Jed对我来说,仅对非抽象类Entry发出警告是没有意义的.考虑以下情况:

trait Order {
  sealed trait EntryOption
  case object EmptyEntry extends EntryOption
  abstract sealed class Entry extends EntryOption

  def isEmpty(a: EntryOption): Boolean = a match {
    case EmptyEntry => true
 // case _: Entry   => false
  }
}

trait OrderImpl extends Order {
  final class EntryImpl extends Entry
}

发出警告的唯一方法是按顺序排列一个具体的类!

解决方法

它确实在树干上抱怨:

scala> object Order {
     |    sealed trait EntryOption
     |    case object EmptyEntry extends EntryOption
     |    trait Entry extends EntryOption
     | 
     |    def isEmpty( a: EntryOption ) : Boolean = a match {
     |       case EmptyEntry => true
     | //    case _: Entry   => false
     |    }
     | }
<console>:18: warning: match is not exhaustive!
missing combination          Entry

          def isEmpty( a: EntryOption ) : Boolean = a match {
                                                    ^
defined module Order

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读