Kompilator mówi mi, że nie może to być z ostrzeżeniem: "Kontrowersyjny typ A występuje w kowariantnej pozycji w typie>: A <: Dowolny typ B." Ostrzeżenie jest w parametrze typu metody komponowania. Logicznie definicja typu ma dla mnie sens. Jeśli kompilator nie ma skrupułów, a następnie, dlaczego problem z konwersją?Dlaczego kompilator Scala twierdzi, że przeciwwskazania typu A występują w kowariantnej pozycji w typie>: A <: Dowolny typ 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]
}
Wszystko czego potrzebuję to przykład, w którym się zepsuje. Wtedy jestem szczęśliwy.