Этот файл:
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"
Scala версия 2.9.0.1.
Я не вижу, как требуется параметр стираемого типа для выполнения соответствия. Это предложение первого случая предназначено для того, чтобы спросить, является ли obj Seq с 3 элементами, равными 1, 2 и 3.
Я бы понял это предупреждение, если бы написал что-то вроде:
case strings : Seq[String] => ...
Почему я получаю предупреждение и что это хороший способ заставить его уйти?
Кстати, я хочу сопоставить что-то со статическим типом объекта. В реальном коде я разбираю что-то вроде Lisp datum - это может быть строка, последовательность данных, символ, число и т.д.