La coincidencia de patrones Scala en tipo genérico con TypeTag genera una advertencia mientras que ClassTag no?
Tengo dos métodos muy similares. La única diferencia es el uso deClassTag
yTypeTag
:
def matchClass[A: ClassTag](v: Any) =
v match {
case a: A => "it's A"
case _ => "not A"
}
def matchType[A: TypeTag](v: Any) = ... // same code as matchClass
Se mostrará una advertencia de compilación paramatchType
, pero no paramatchClass
:abstract type pattern A is unchecked since it is eliminated by erasure case a: A
¿Por qué hay una advertencia? ¿Por qué se muestra solo paraTypeTag
y noClassTag
?