我想编写一系列特征,其方法应该记录一些东西和Logger特征,这些特征应该在具体的记录器中实现,并且只有在混合Logger时才能混合上述特征。我只知道一个特性可以依赖于一个类,即它只能混合到具有这个类作为超类的类中。我该怎么办?
答案 0 :(得分: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()