1

いくつかのコンストラクターパラメーターを持つ基本クラスがあります。

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

クラスはどんどん大きくなり、一部のサブクラスのみが特別な動作を必要とするため、それをトレイトにリファクタリングしたいと考えています。ただし、まだcontext特性にアクセスする必要があります。私はこれを試しました:

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

しかし、scala コンパイラーは言う: not found: value context . どうすれば解決できますか?

4

1 に答える 1

5

パラメータcontextはプライベート フィールドに変換されます。パラメーターまたはメンバーが暗黙的であるという事実は、それがパブリックであることを意味するものではありません。( HugeClass) で表示されるクラス内でのみ暗黙的です。に変えcontextますval

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

そしてそれはうまくいくでしょう。

于 2011-02-09T13:14:43.057 に答える