5

Sto provando a fare in modo che Scala trovi il tipo giusto per un tipo dipendente dal percorso proveniente da un tipo singleton.Esposizione di un tipo dipendente dal percorso da un tipo singleton

primo luogo, qui è il contenitore tipo per l'esempio, e un'istanza:

trait Container { 
    type X 
    def get(): X 
} 

val container = new Container { 
    type X = String 
    def get(): X = "" 
} 

posso vedere la stringa in questo primo tentativo (quindi già uno scenario di lavoro):

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() 

Ma quando non esiste un parametro di tipo, questo non funziona più.

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() 

Qualcuno sa perché è necessario il parametro di tipo?

risposta

1

Vedere il thread this su scala-interna, in particolare, la spiegazione di Adriaan.

Problemi correlati