5

Я пытаюсь заставить Scala найти правильный тип для зависимого от пути типа, исходящего из одноэлементного типа.Выявление зависимого от пути типа, исходящего из одноэлементного типа

Во-первых, здесь тип контейнера для примера, и один экземпляр:

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

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

Я могу видеть строку в первой попытке (так у меня уже есть рабочий сценарий):

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

Но когда нет параметра типа, это больше не работает.

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

Кто-нибудь знает, зачем нужен параметр типа?

ответ

1

См. this нить на scala-внутренностях, в частности, объяснение Адриана.

Смежные вопросы