Tenga una mirada en esta clase Scala:¿Por qué esta advertencia de borrado con variables miembro declarada como una tupla?
class Example {
val (x, y): (Int, Int) = (1, 2)
}
Compilación esto da lugar a una advertencia:
Example.scala:2: warning: non variable type-argument Int in type pattern
(Int, Int) is unchecked since it is eliminated by erasure
val (x, y): (Int, Int) = (1, 2)
^
Extracción del tipo de anotación explícita se deshace de esta advertencia:
class Example {
val (x, y) = (1, 2)
}
Por qué ¿recibo la advertencia y por qué la eliminación de la anotación de tipo explícito se deshace de ella? Por lo que puedo ver, nada realmente cambia, x
y y
son todavía del tipo Int
sin la anotación de tipo.
Ok, si omito la anotación tipo, en la segunda coincidencia intenta hacer coincidir 'Tuple2 [_, _]' en lugar de 'Tuple2 [Int, Int]' y no necesita verificar el borrado tipo de parámetros Por lo tanto, es un desafortunado efecto secundario de la sintaxis especial para las tuplas. – Jesper