유형 매개 변수가 둘러싸는 클래스가 아닌 둘러싸는 메서드에서 올 때 패턴 일치가 다르게 작동하는 이유는 무엇입니까? 예를 들어
trait Base[T]
case class Derived(v: Int) extends Base[Int]
class Test[A] {
def method(arg: Base[A]) = {
arg match {
case Derived(_) => 42
}
}
}
오류를 준다
constructor cannot be instantiated to expected type;
found : A$A87.this.Derived
required: A$A87.this.Base[A]
case Derived(_) => 42
^
A
메소드 유형 매개 변수 인 경우 성공적으로 컴파일되는 동안
class Test {
def method[A](arg: Base[A]) = {
arg match {
case Derived(_) => 42
}
}
}