我几天前就遇到过这个错误,并且不太明白为什么Scala编译器允许这个代码编译:
class Foo[K] {
def bar(k: K) = {
val Seq(x) = k // Why isn't the compiler complaining about this?
val Array(y) = k
val List(z) = k
println(k)
}
}
object Main {
def main(args: Array[String]) {
val foo = new Foo[String]()
foo.bar("hello")
}
}
显然,K可以是任何东西,并且没有暗示或任何说它是Seq,List或Array的东西。为什么编译器找不到这个bug?我发现它非常荒谬且非常不安全。我使用的是Scala 2.10.3。