クラスがあるとしましょう:
class MyClass {
val value = new MyClass
}
これは機能しません。スタック エラーが発生します。これを機能させる方法はありますか?値はのインスタンスMyClass
ですか?
これを可能にする最も簡単な方法は、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
}
しかし、私はそれが何に役立つのだろうかと思っています...