【发布时间】:2020-08-12 11:32:42
【问题描述】:
假设我有以下特征和对象:
trait T {
val x: Int
println("In Trait", x)
}
object Obj extends T{
val y: Int = 10
val x: Int = y
def run() = {
println("In Obj", x)
}
}
Obj.run()
// (In Trait,0)
// (In Obj,10)
我可以让特征T中的x的值与对象Obj中的x的值相同吗?换句话说,我的预期输出应该是:
// (In Trait,10)
// (In Obj,10)
假设y 的值仅在运行时已知。
【问题讨论】:
-
这能回答你的问题吗? In Scala, what is an "early initializer"?
-
这感觉像是一个 XY 问题。为什么要在 trait 初始化器中调用从子类访问值的代码?
标签: scala inheritance initialization overriding traits