параметр конструктора базового класса в признаке - PullRequest
1 голос
/ 09 февраля 2011

У меня есть базовый класс с некоторым параметром конструктора:

abstract class HugeClass(implicit context: ContextClass) {
   ...
}

Поскольку класс становится все больше и больше, и только некоторым подклассам требуется специальное поведение, я хочу преобразовать его в черту.Тем не менее, мне все еще нужен доступ к context в признаке.Я пробовал это:

trait SomeTrait extends HugeClass {
    def myMethod = {
        context.method
    } 
}

Но компилятор Scala говорит: не найдено: значение контекста .Как я могу решить это?

1 Ответ

5 голосов
/ 09 февраля 2011

Параметр context превращается в приватное поле.Тот факт, что параметр или член является неявным, не означает, что он является общедоступным - он неявный только в пределах класса, в котором он видим (HugeClass).Преврати context в val:

abstract class HugeClass(implicit val context: ContextClass) {
   ...
}

и все заработает.

...