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

编译器构造 – 更好的类型检查Scala中的匹配

发布时间:2020-12-16 19:05:38 所属栏目:安全 来源:网络整理
导读:scala class Adefined class Ascala class Bdefined class Bscala val a: A = new Aa: A = A@551510e8scala a match { | case _: B = println("unlikely") | case _ = println("no match") | }no match 在上面的示例中,编译器不应该告诉我,其中一种情况永远
scala> class A
defined class A

scala> class B
defined class B

scala> val a: A = new A
a: A = A@551510e8

scala> a match {
     | case _: B => println("unlikely")
     | case _ => println("no match")
     | }
no match

在上面的示例中,编译器不应该告诉我,其中一种情况永远不能匹配?一个稍微复杂的例子最近引起了我的兴趣,这导致了一个应该被编译器捕获的不必要的bug.

编辑:

只是为了更清楚这个问题.这是不可能在Scala由于某些原因我看不到? (我可以理解这些类型是否使用泛型和类型擦除是否导致问题,但这看起来很直接.)如果这不是不可能的,那么这是不是在Scala中的合法原因?如果不是会什么时候添加?

(编辑:李大同)

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

    推荐文章
      热点阅读