3
클래스 값 매개 변수에 바인딩 된 형식 멤버의 사용이 "형식 불일치"오류를 생성하는 이유는 무엇입니까? 예를 들어 :클래스 값 매개 변수의 형식 멤버에 대한 형식 불일치
scala> class A { type t }
defined class A
scala> class B(val a: A)
defined class B
scala> val aInt = new A { type t = Int }
aInt: A{type t = Int} = [email protected]
scala> val b = new B(aInt)
b: B = [email protected]
scala> val i: b.a.t = 1
<console>:11: error: type mismatch;
found : Int(1)
required: b.a.t
val i: b.a.t = 1
^
이상한 것은 내가 클래스 매개 변수의 모든 정의되지 않은 값을 사용할 때 잘 작동한다는 것입니다 :
scala> abstract class C { val a: A }
defined class C
scala> val c = new C { val a = aInt }
c: C{val a: A{type t = Int}} = [email protected]
scala> val i: c.a.t = 1
i: c.a.t = 1
은 그런 행동에 대한 이유는 무엇입니까?