特征中的基类构造函数参数

Mic*_*ael 1 scala traits

我有一个带有一些构造函数参数的基类:

abstract class HugeClass(implicit context: ContextClass) {
   ...
}
Run Code Online (Sandbox Code Playgroud)

因为类变得越来越大,只有一些子类需要一些特殊的行为,我想把它重构成一个特征.但是,我仍然需要访问context特征.我试过这个:

trait SomeTrait extends HugeClass {
    def myMethod = {
        context.method
    } 
}
Run Code Online (Sandbox Code Playgroud)

但是scala编译器说:找不到:值上下文.我怎么解决这个问题?

axe*_*l22 5

参数context变为私有字段.参数或成员是隐式的这一事实并不意味着它是公共的 - 它只隐含在(HugeClass)中可见的类中.转contextval:

abstract class HugeClass(implicit val context: ContextClass) {
   ...
}
Run Code Online (Sandbox Code Playgroud)

它会起作用.