我有一个带有一些构造函数参数的基类:
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编译器说:找不到:值上下文.我怎么解决这个问题?
参数context变为私有字段.参数或成员是隐式的这一事实并不意味着它是公共的 - 它只隐含在(HugeClass)中可见的类中.转context成val:
abstract class HugeClass(implicit val context: ContextClass) {
...
}
Run Code Online (Sandbox Code Playgroud)
它会起作用.