在理解this answer的同时,我编写了自己的示例,该示例使用了scala-library版本2.11.4
的特征:
trait Trace {
def id(): Int
def concrete(i : Int) = println(i)
}
程序中的使用版本2.12.0-M5
。
object App {
def main(args: Array[String]) = {
println("st")
val t = new TraceImpl
println(t.id())
t.concrete(10)
}
class TraceImpl extends Trace{
override def id(): Int = 1
}
}
我预计会在运行时抛出一些异常,但程序运行正常并打印:
st
1
10
为什么呢?从版本2.12.x
开始,应该更改traits的运行时实现?