Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala:让特质依赖于其他特质_Scala_Traits - Fatal编程技术网

Scala:让特质依赖于其他特质

Scala:让特质依赖于其他特质,scala,traits,Scala,Traits,我想写一个trait家族,它的方法应该记录一些东西,一个Logger trait应该在具体的Logger中实现,并且只有当Logger被混合在一起时,才可能混合上面的trait。我只知道一个特性可以依赖于一个类,也就是说,它只能混合到拥有这个类作为超级类型的类中。我能做什么?听起来你需要 trait Logger { def log(msg: String): Unit } trait ConsoleLogger extends Logger { def log(msg: String

我想写一个trait家族,它的方法应该记录一些东西,一个Logger trait应该在具体的Logger中实现,并且只有当Logger被混合在一起时,才可能混合上面的trait。我只知道一个特性可以依赖于一个类,也就是说,它只能混合到拥有这个类作为超级类型的类中。我能做什么?

听起来你需要

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()