编译器构造 – 更好的类型检查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中的合法原因?如果不是会什么时候添加? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |