2016-11-11 93 views
1

我想寫一個家庭的特徵,它的方法應該記錄的東西和一個Logger特點應該在具體的記錄器來實現的,它應該只可能在上面的特質混合時,記錄儀也混合在一起。我只知道一個特質可以依賴於一個類,也就是說它只能被混合到具有這個類作爲超類的類中。我能做什麼?斯卡拉:讓特質依賴於其他特質

回答

3

這聽起來像你需要self types例如

trait Logger { 
    def log(msg: String): Unit 
} 

trait ConsoleLogger extends Logger { 
    def log(msg: String): Unit = { println(msg) } 
} 

trait NeedsLogger { self: Logger => 
    def doSomething(): Unit = { 
    self.log("about to do something...") 
    self.log("it worked!") 
    } 
} 

object Test extends NeedsLogger with ConsoleLogger { 
} 

Test.doSomething()