相关疑难解决方法(0)

Scala中的线性化顺序

使用特征时,我很难理解Scala中的线性化顺序:

class A {
  def foo() = "A"
}

trait B extends A {
  override def foo() = "B" + super.foo()
}

trait C extends B {
  override def foo() = "C" + super.foo()
}

trait D extends A {
  override def foo() = "D" + super.foo()
}

object LinearizationPlayground {
    def main(args: Array[String]) {

      var d = new A with D with C with B;
      println(d.foo) // CBDA????
  }    
}
Run Code Online (Sandbox Code Playgroud)

它打印CBDA但我无法弄清楚为什么.如何确定特征的顺序?

谢谢

scala traits

40
推荐指数
4
解决办法
5858
查看次数

标签 统计

scala ×1

traits ×1