我遇到了一个值初始化问题:
class Top
class X(val v : Top) extends Top
class Y extends Top
X 是使用其他 Top 类型对象构造的类,例如 X 或 Y。这意味着它可以使用自身构造。例如,
val x = new X(x)
编译器可以工作,但是当我访问 v 字段时,返回的是 null。
scala> x.v
res9: Top = null
我尝试了惰性初始化和按名称参数,得到了相同的结果。我的 Scala 版本是 2.9.1。谁能帮帮我?
最佳答案
肺
你的代码是如何使用 lazy 和 call-by-name 的?它像这样对我有用:
class Top
class X(_v: => Top) extends Top {
lazy val v = _v
}
scala> lazy val x: X = new X(x)
x: X = <lazy>
scala> x.v
res3: Top = X@422d15ad
关于scala - 自引用值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11273273/