Il compilatore mi sta dicendo che questo non può essere con un avviso di: "il tipo A controvariante si verifica in posizione covariante nel tipo> A <: Qualsiasi di tipo B." L'avviso è nel parametro type del metodo di composizione. Logicamente la definizione del tipo ha senso per me. Se il compilatore non ha remore con e quindi, perché il problema con il contrario?Perché il compilatore Scala dice che il tipo A controvariante si verifica in posizione covariante in tipo>: A <: Qualunque tipo B?
trait Foo[-A]{
def compose[B >: A](t: Foo[B]): Foo[A] = t andThen this
def andThen[B <: A](t: Foo[B]): Foo[B]
}
Tutto quello che serve è un esempio in cui si rompe. Quindi sono felice.