Es un hecho triste de la vida en Scala que si crea una instancia de una Lista [Int], puede verificar que su instancia sea una Lista, y puede verificar que cualquier elemento individual de la misma sea una Int, pero no que sea una Lista [ Int], como se puede verificar fácilmente:
scala> List(1,2,3) match {
| case l : List[String] => println("A list of strings?!")
| case _ => println("Ok")
| }
warning: there were unchecked warnings; re-run with -unchecked for details
A list of strings?!
La opción sin marcar pone la culpa directamente en el tipo de borrado:
scala> List(1,2,3) match {
| case l : List[String] => println("A list of strings?!")
| case _ => println("Ok")
| }
<console>:6: warning: non variable type-argument String in type pattern is unchecked since it is eliminated by erasure
case l : List[String] => println("A list of strings?!")
^
A list of strings?!
¿Por qué es eso y cómo puedo evitarlo?
scala 2.10.2
, vi esta advertencia: <console>:9: warning: fruitless type test: a value of type List[Int] cannot also be a List[String] (but still might match its erasure) case list: List[String] => println("a list of strings?") ^
creo que su pregunta y respuesta son muy útiles, pero no estoy seguro de si esta advertencia actualizada es útil para los lectores.