0
我的情況類似,這個問題有點:使用可堆疊特性與單獨的對象
Can the stackable trait pattern be used with singleton objects?
但小的差異。我有什麼可以簡化爲以下形式:
abstract class Pr {
def pr()
}
trait PrePostPr extends Pr {
var NUMERIC_VAR: Int = _
abstract override def pr() {
NUMERIC_VAR = 5 // number is being extracted eg. from conf file
super.pr()
}
}
現在我真的想有一個單獨的對象,將檢查的常數,取決於它會採取的方式如下一些進一步的行動:
class ImplPr extends Pr with PrePostPr {
def pr() = if(NUMERIC_VAR > 5) println("Foo") else println("Bar")
}
object Foo extends ImplPr
Foo.pr()
可惜的是,上面的代碼不編譯 - 我得到:
方式PR需要'覆蓋」修飾符
是否有任何解決方法使此解決方案有效?
我不認爲這是理論上可行。爲了讓'Foo.pr'訪問'NUMERIC_VAR',它必須在'PrePostPr'的子類中實現,這意味着它永遠不會被稱爲'super.pr()'in 'PrePostPr.pr()'。您可能必須將'NUMERIC_VAR'移到不同的類/特徵。 – devkat