次の状況では、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 _ =>
}
}
バグを報告する必要があると思いますか?