scala之自引用值
qlqwjy
阅读:17
2024-11-01 17:39:52
评论:0
我遇到了一个值初始化问题:
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
声明
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。