對不起,如果這是一個愚蠢的標題,我不知道該如何表達這顯然斯卡拉 - 通過自我類型註解類子對象
說,我有一個日誌特質:
trait Logging {
def log(s:String)
}
,然後一些實施
trait PrintlnLog extends Logging {
def log(s:String) { println(s) }
}
,我用這樣
class SomeProcess { this:Logging =>
def doSomeJunk() {
log("starting junk")
...
log("junk finished")
}
}
我可以使用這個類像
val p = new SomeProcess() with PrintLog
p.doSomeJunk()
現在如果我有這個
class SubProcess { this:Logging =>
def doSubJunk() {
log("starting sub junk")
...
log("finished sub junk")
}
}
class ComplexProcess { this:Logging =>
def doMoreJunk() {
log("starting more junk")
val s = new SubProcess with // ??? <-- help!
s.doSubJunk()
log("finished more junk")
}
}
在ComplexProcess
我想實例化一個子過程中已經混入ComplexProcess相同的日誌特質的混合,但ComplexProcess不知道那是什麼。有沒有辦法得到它的參考?
這實際上就是我在做的事情,但它很醜,因爲我具有散佈在我的代碼中的所有這些特徵,其唯一目的是爲了記錄日誌。希望有更好的辦法 – dvmlls 2012-03-05 19:47:10