scala> class A
defined class A
scala> class B
defined class B
scala> val a: A = new A
a: A = [email protected]
scala> a match {
| case _: B => println("unlikely")
| case _ => println("no match")
| }
no match
在上面的例子中不應該編譯器告訴我,其中一個案例永遠不能匹配?最近一個稍微複雜一些的例子讓我意識到了這一點,導致了一種本應該被編譯器捕獲到的不必要的錯誤。在斯卡拉匹配更好的類型檢查
編輯:
只要是關於這個問題更清楚。由於某些原因,我無法看到Scala是不可能的? (我可以理解這些類型是否使用泛型,類型擦除導致了問題,但是這看起來非常簡單。)如果這不是不可能的,那麼Scala中沒有合法的原因嗎?如果不是什麼時候它會被添加? ;)
令人驚歎!我從那個教我scala的人那裏得到我的答案,並且也放棄了它! Thx stackoverflow! – Kami 2010-08-03 22:46:36