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
什么是对这种行为的原因是什么?