编译器告诉我这不能带有以下警告:“逆变类型 A 出现在类型 > 的协变位置:A <:任何类型 B。” 警告在 compose 方法的类型参数中。从逻辑上讲,类型定义对我来说很有意义。如果编译器对 andThen 没有疑虑,为什么反过来会出现问题?
trait Foo[-A]{
def compose[B >: A](t: Foo[B]): Foo[A] = t andThen this
def andThen[B <: A](t: Foo[B]): Foo[B]
}
我所需要的只是一个它崩溃的例子。那我很开心。