Почему это не компилируется (или не работает?):
case class A(x: Int)
class B extends A(5)
(new B) match {
case A(_) => println("found A")
case _ => println("something else happened?")
}
Ошибка компилятора:
constructor cannot be instantiated to expected type; found : blevins.example.App.A required: blevins.example.App.B
Обратите внимание, что это компилируется и работает как ожидалось:
(new B) match {
case a: A => println("found A")
case _ => println("something else happened?")
}
ДОПОЛНЕНИЕ
Просто для справки, он компилируется и работает нормально:
class A(val x: Int)
object A {
def unapply(a: A) = Some(a.x)
}
class B extends A(5)
(new B) match {
case A(i) => println("found A")
case _ => println("something else happened?")
}