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
Dans l'exemple ci-dessus ne devrait pas le compilateur me dire que l'un des cas ne peut jamais correspondre? Un exemple un peu plus compliqué m'a récemment sorti, menant à ce qui semblait être un bogue inutile qui aurait dû être attrapé par le compilateur.Meilleur contrôle de type sur le match dans Scala
Edit:
Juste pour être plus clair sur la question. Est-ce impossible à Scala pour une raison que je ne peux pas voir? (Je peux comprendre si les types utilisaient des génériques et l'effacement de type causait des problèmes mais cela semble assez simple.) Et si ce n'est pas impossible, y a-t-il des raisons légitimes que ce n'est pas dans Scala? Sinon, quand sera-t-il ajouté? ;)
Incroyable! Je vais ma réponse de celui qui m'a enseigné scala et l'a aussi induit! Thx stackoverflow! – Kami