【发布时间】:2014-03-20 12:33:56
【问题描述】:
有人可以解释一下为什么示例 1 可以编译,而示例 2 没有吗?
示例 1:
trait Foo[+A]
trait Bar[A] extends Foo[A]
示例 2:
trait Foo[A[+_]]
trait Bar[A[_]] extends Foo[A]
示例 2 无法编译并出现以下错误消息:“类型参数 (A) 的种类不符合 trait Foo 中类型参数的预期种类 (类型 A)。A 的类型参数与类型 A 的不匹配预期参数:类型_(在 trait Bar) 是不变的,但类型 _ (在 trait Foo 中) 被声明为协变"
【问题讨论】: