scala> class A
defined class A
scala> class B
defined class B
scala> val a: A = new A
a: A = A@551510e8
scala> a match {
| case _: B => println("unlikely")
| case _ => println("no match")
| }
no match
В горния пример не трябва ли компилаторът да ми каже, че един от случаите никога не може да съвпадне? Малко по-сложен пример наскоро ме хвана, което доведе до нещо, което се чувствах като ненужен бъг, който трябваше да бъде уловен от компилатора.
Редактиране:
Само за по-ясен въпрос. Това невъзможно ли е в Scala по някаква причина, която не виждам? (Мога да разбера дали типовете са използвали генерични и изтриването на типове е причинявало проблеми, но това изглежда доста ясно.) И ако това не е невъзможно, има ли законни причини това да не е в Scala? Ако не, кога ще бъде добавено? ;)