Mam problem w Scali 2.9.2 implementacji metody deklarującej zależny typ zwracania. Poniższy kodJak można przesłonić metodę z zależnym typem zwracania?
object DependentTypesQuestion {
def ??? = throw new UnsupportedOperationException
trait X {
trait Y
}
trait Z {
def z(x: X): x.Y
}
object Z extends Z {
override def z(x: X): x.Y = ???
}
}
podstawie pkt 2.9.2 produkuje następujący komunikat o błędzie podczas kompilacji:
overriding method z in trait Z of type (x: DependentTypesQuestion.X)x.Y; method z has incompatible type
W 2.10.0-M4 Problem wydaje się, że zostały ustalone, ale niestety mój projekt jest związany z 2.9 na teraz.
Czy można obejść ten problem w wersji 2.9.2?
(Alternatywnie, jest jakaś perspektywa 2.9.3 który obejmowałby backportowaną poprawkę z 2,10?)
Rozumiem. Niestety w moim prawdziwym przypadku obiekt Z był wewnętrzną implementacją, a zewnętrzni konsumenci widzieli tylko cechę Z, więc nie osiągnęło to typowania, na które tak naprawdę czekam. –
Czas próby ucieczki 2,9, jak sądzę. –