【发布时间】:2013-05-05 22:06:10
【问题描述】:
在以下情况下,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 _ =>
}
}
我想我应该提交一个错误?
【问题讨论】:
标签: scala types pattern-matching