scala> class A
defined class A
scala> class B
defined class B
scala> val a: A = new A
a: A = [email protected]
scala> a match {
| case _: B => println("unlikely")
| case _ => println("no match")
| }
no match
En el ejemplo anterior, ¿no debería el compilador decirme que uno de los casos nunca puede coincidir? Un ejemplo un poco más complicado me sorprendió recientemente, lo que me llevó a lo que parecía un error innecesario que debería haber sido capturado por el compilador.Mejor tipo comprobación de coincidencia en Scala
Editar:
sólo para estar más clara sobre la cuestión. ¿Es esto imposible en Scala por alguna razón que no puedo ver? (Puedo entender si los tipos usaban genéricos y la borradura de tipo estaba causando problemas, pero esto parece bastante sencillo). ¿Y si esto no es imposible, hay razones legítimas por las que esto no está en Scala? Si no, ¿cuándo se agregará? ;)
¡Increíble! ¡Respondo la respuesta de quien me enseñó la Scala y la inventé también! Thx stackoverflow! – Kami