I tienen la siguiente jerarquía de clases:Scala - patrón de coincidencia de una tupla de tipos relacionados
class A
class B extends A
class C extends A
a continuación, hay otra clase que tiene instancias de estas clases y hay un método, en el que dos casos de reconocimiento de patrones son posibles de esta manera:
class D (one: A, two: A) {
def work {
(one, two) match {
case (o, t): (B, B) => ... blablabla
case (o, t): (B, C) => ... blablabla
case _ =>
}
}
}
Sin embargo, cuando debería resolver el juego a favor de la segunda caja (B, C)
, intenta resolver como (B, B)
y viene con la excepción de difusión clase que C cannot be cast to B
. ¿Por qué? ¿Qué hacer? ¿Cómo puedo superar esto?
He estado luchando tanto tiempo para descubrir la sintaxis correcta ... ¡Gracias! – Benoit