这感觉很基本;我很抱歉。
考虑
trait Foo[+T] { def t : T }
trait Bar[+S,+T] extends Foo[T] { def s : S }
trait Baz[+S,T] extends Foo[T] { def s : S }
Foo 中 T 的协方差是否自动适用于 Baz,即使 Baz 中的 T 未标记为协变?Bar 和 Baz 的行为之间会有任何有意义的区别吗?
(玩弄一下,这两种形式似乎很难区分。如果它们相同,那么 Baz 形式没有警告或发出错误信号会让人感觉很脏,因为单独看 Baz 你会认为 T 不是变体。)