假设我有一堂课:
class MyClass {
val value = new MyClass
}
这不起作用,它会引发堆栈错误。有没有办法使这项工作,所以 value 是MyClass
?
使这成为可能的最简单方法是使用 a 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
我相信您会看到这样的构造会递归地创建无限数量的MyClass
对象。
如果你真的想要这样的MyClass
对象“链”,你需要某种形式的基本情况来限制递归。
我有你需要的
class MyClass {
val value = this
}
但是我想知道这对...有用