【问题标题】:base class constructor parameter in trait特征中的基类构造函数参数
【发布时间】:2011-06-24 03:14:30
【问题描述】:

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

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

因为类变得越来越大,并且只有一些子类需要一些特殊的行为,所以我想将它重构为一个 trait。但是,我仍然需要访问特征中的context。我试过这个:

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

但是 scala 编译器说:not found: value context。我该如何解决?

【问题讨论】:

    标签: scala traits


    【解决方案1】:

    参数context变成私有字段。参数或成员是隐式的这一事实并不意味着它是公共的——它仅在它可见的类中是隐式的 (HugeClass)。 将context 变成val

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

    它会起作用的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多