此文件:關於這個Scala模式匹配中未經檢查的類型參數的警告?
object Test extends App {
val obj = List(1,2,3) : Object
val res = obj match {
case Seq(1,2,3) => "first"
case _ => "other"
}
println(res)
}
給出了這樣的警告:
Test.scala:6: warning: non variable type-argument A in type pattern Seq[A]
is unchecked since it is eliminated by erasure
case Seq(1,2,3) => "first"
斯卡拉版本2.9.0.1。
我不明白如何執行匹配需要擦除類型參數。這第一種情況子句意味着要問,如果OBJ是3個元素等於1,2序列,和3
我能明白這一點警告,如果我寫的是這樣的:
case strings : Seq[String] => ...
爲什麼我會收到警告,以及讓它消失的好方法是什麼?
順便說一下,我確實希望與靜態類型的Object進行匹配。在真正的代碼中,我正在解析類似於Lisp數據的東西 - 它可能是字符串,基準序列,符號,數字等。
在一個有趣的說明,斯卡拉版本2.8.1在這種情況下不會給出這個警告 – thoredge
@thoredge,我的猜測是2.9.0中的警告可能被認爲是一種改進。我不知道這個特殊情況是否可預見。 – huynhjl