Ich habe Probleme in Scala 2.9.2 implementieren eine Methode, die einen abhängigen Rückgabetyp deklariert. Der folgende CodeWie kann ich eine Methode mit einem abhängigen Rückgabetyp überschreiben?
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 = ???
}
}
unter 2.9.2 erzeugt die folgende Fehlermeldung während der Kompilierung:
overriding method z in trait Z of type (x: DependentTypesQuestion.X)x.Y; method z has incompatible type
In 2.10.0-M4 scheint das Problem behoben worden, aber leider ist mein Projekt gebunden 2.9 für jetzt.
Kann dieses Problem in 2.9.2 umgehen?
(Alternativ gibt es eine Aussicht auf eine 2.9.3, die die zurückportiert fix von 2.10 enthalten würde?)
Ich sehe. Leider war das Objekt Z in meinem realen Fall eine interne Implementierung, und externe Konsumenten sehen nur das Merkmal Z, also erreicht dies nicht die Typisierung, nach der ich wirklich suche. –
Zeit zu versuchen, 2,9 zu entkommen, schätze ich. –