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
В приведенном выше примере компилятор не должен сообщать мне, что один из случаев никогда не может совпадать? Немного более сложный пример недавно привлек меня, что привело к тому, что было похоже на ненужную ошибку, которую должен был поймать компилятор.Лучшая проверка типа на матче в Scala
Edit:
Просто чтобы быть понятнее о вопросе. Разве это невозможно в Скале по какой-то причине я не вижу? (Я могу понять, используют ли типы дженерики и стирание типов, что вызывает проблемы, но это выглядит довольно прямолинейно.) И если это невозможно, есть ли законные причины, которых нет в Scala? Если нет, когда он будет добавлен? ;)
Удивительно! Я отвечу от того, кто учил меня scala и ввел его в заблуждение! Thx stackoverflow! – Kami