在以下情况下,Scala 似乎不承认 的类型system
:
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 _ =>
}
}
我想我应该提交一个错误?