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