让我说我有一个班级:
class MyClass {
val value = new MyClass
}
这不起作用,它会引发堆栈错误。
有没有办法使这项工作,所以value是MyClass
的实例?
答案 0 :(得分:4)
实现这一目标的最简单方法是使用lazy val
,在访问它之前不会执行:
scala> class MyClass { lazy val value = new MyClass }
defined class MyClass
scala> new MyClass
res0: MyClass = MyClass@6a073b72
scala> res0.value
res1: MyClass = MyClass@6b37008a
scala> res1.value
res2: MyClass = MyClass@503f0b70
答案 1 :(得分:3)
我确信你会看到这样的构造会以递归方式创建无限数量的MyClass
个对象。
如果你真的想要MyClass
对象的这种“链”,你需要某种形式的基本情况来限制递归。
答案 2 :(得分:0)
我有你需要的东西
class MyClass {
val value = this
}
然而,我想知道这对...有什么用处。