2
在下列情況下斯卡拉似乎不承認的system
類型:如果我不能完全糊塗模式匹配拒絕承認成員類型(X值不_2的成員)
sealed trait Bar[S] {
def system: S
}
trait Foo { def bar(): Unit }
trait FooBar extends Bar[Foo]
,這意味着,我應該能夠做到以下幾點:
def test(fb: FooBar) { fb.system.bar() } // ok, this works
但下列失敗:
trait Test[S] {
val bar: Bar[S]
bar match {
case fb: FooBar => fb.system.bar() // error: value bar is not a member of _2
case _ =>
}
}
這是一個模式匹配器中的錯誤,還是我錯過了一個關鍵位?
編輯:請注意,下面的工作:
trait Test[S] {
val bar: Bar[S]
bar match {
case fb: FooBar => (fb: FooBar).system.bar()
case _ =>
}
}
我想我應該提交一個bug?
'FooBar'是一個平面類型,所以擦除沒有問題。另請注意,編譯器接受我的類型註釋'(fb:FooBar)',所以匹配大小寫的類型肯定有些奇怪。 – 2013-05-11 22:16:28