【发布时间】:2016-10-29 20:05:35
【问题描述】:
在以下示例中,我无法理解函数 bar1 是如何编译但 bar2 没有编译的。
trait Key[T] {
}
trait KeyString extends Key[String]
class Foo {
def bar1[T]( key: Key[T] ): T = key match {
case k: KeyString => "hallo"
}
/*def bar2[T](key: T): T = key match {
case k: String => "hallo"
}*/
}
有人可以解释一下,为什么在 bar1 中编译器可以弄清楚,“hallo”是 T 类型,而在 bar2 中这是不可能的。
【问题讨论】:
标签: scala generics pattern-matching