을 감안할 때 : 일치하는 유형의 사례 개체로 val을 재정의 할 수없는 이유는 무엇입니까?
trait Mixin {}
case class A(a: Int) extends Mixin
case object B extends Mixin
trait Base {
val m = A(1)
}
trait Sub extends Base {
override val m = B // does. not. compute.
}
나는 특성
Sub
에서 컴파일 오류가 발생합니다 :
<console>:18: error: overriding value m in trait Base of type A;
value m has incompatible type
override val m = B // does. not. compute.
^
이유는 무엇입니까? case 객체는 case 클래스와 마찬가지로 올바른 특성을 상속합니다. 이것은 스칼라 2.10입니다.
나는 당신이'def' 아닌'val'로'Base.m'를 선언하는 것이 좋습니다 수 있습니다. 형질에 우선권을 부여하면 모든 종류의 초기화 명령에 어려움을 겪을 수 있습니다. –