Tengo problemas en Scala 2.9.2 implementando un método que declara un tipo de devolución dependiente. El siguiente código¿Cómo puedo anular un método con un tipo de devolución dependiente?
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 = ???
}
}
bajo 2.9.2 produce el siguiente mensaje de error durante la compilación:
overriding method z in trait Z of type (x: DependentTypesQuestion.X)x.Y; method z has incompatible type
En 2.10.0-M4 el problema parece haber sido fijada, pero por desgracia mi proyecto está ligado a 2.9 por ahora.
¿Es posible evitar este problema en 2.9.2?
(Alternativamente, ¿hay alguna posibilidad de una 2.9.3 que incluiría el arreglo portado desde 2,10?)
I see. Desafortunadamente, en mi caso real, el objeto Z era una implementación interna, y los consumidores externos solo ven el rasgo Z, por lo que no logro el tipeo que realmente estoy buscando. –
Es hora de intentar escapar de 2.9, supongo. –