2
이것은 this question의 후속 조치입니다.스칼라 자체 유형 : 유형 매개 변수 오류의 구성원
왜이 코드가 컴파일되지 않으며 어떻게 수정합니까?
trait Vec[V] { self:V =>
def -(v:V):V
def dot(v:V):Double
def norm:Double = math.sqrt(this dot this)
def dist(v:V):Double = (this - v).norm
}
오류이다
Vec.scala:6: error: value norm is not a member of type parameter V
def dist(v:V):V = (this - v).norm
^
감사합니다. 뭐가 잘못 됐어? – dsg
자체 형식 선언은 단방향입니다. Vec [V]는 V 타입을 따르는 타입이지만, V는 Vec [V]를 따르는 타입이 아닙니다 (실제 타입은 외부 적으로 볼 수 없으므로 실제 의미가 더 복잡합니다. 여기에 달한다). 원래 코드는 V를 반환했지만 호출 표준은 Vec [V]가 필요했습니다. –