5

Próbuję ustawić program Scala w odpowiednim typie dla typu zależnego od ścieżki pochodzącego z typu singleton.Wystawianie typu zależnego od ścieżki pochodzącego z typu singleton

pierwsze, tutaj jest pojemnikiem typu na przykład, i jeden przykład:

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

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

widzę ciąg w tej pierwszej próbie (tak mam już scenariusz robocza):

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

Ale gdy nie ma parametru typu, to już nie działa.

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

Czy ktoś wie, dlaczego parametr typu jest potrzebny?

Odpowiedz

1

Zobacz wątek this wątek na scala-internals, w szczególności, wyjaśnienie Adriaana.

Powiązane problemy