Estoy tratando de hacer que Scala encuentre el tipo correcto para un tipo dependiente de ruta que viene de un tipo singleton.Exponer un tipo dependiente de ruta de un tipo singleton
primer lugar, aquí es el contenedor tipo para el ejemplo, y una instancia:
trait Container {
type X
def get(): X
}
val container = new Container {
type X = String
def get(): X = ""
}
puedo ver la cadena en este primer intento (por lo que ya tengo un escenario de trabajo):
class WithTypeParam[C <: Container](val c: C) {
def getFromContainer(): c.X = c.get()
}
val withTypeParam = new WithTypeParam[container.type](container)
// good, I see the String!
val foo: String = withTypeParam.getFromContainer()
Pero cuando no hay un parámetro de tipo, esto ya no funciona.
class NoTypeParam(val c: Container) {
def getFromContainer(): c.X = c.get()
}
val noTypeParam = new NoTypeParam(container)
// this does *not* compile
val bar: String = noTypeParam.getFromContainer()
¿Alguien sabe por qué es necesario el parámetro de tipo?