2

クラスがあるとしましょう:

class MyClass {
  val value = new MyClass
}

これは機能しません。スタック エラーが発生します。これを機能させる方法はありますか?値はのインスタンスMyClassですか?

4

3 に答える 3

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
于 2012-07-10T13:38:18.527 に答える
3

MyClassこのような構成が無限の数のオブジェクトを再帰的に作成することがわかると思います。

そのようなオブジェクトの「チェーン」が本当に必要なMyClass場合は、再帰を制限するために何らかの形の基本ケースが必要です。

于 2012-07-10T13:23:28.100 に答える
0

私はあなたが必要なものを持っています

class MyClass {
  val value = this
}

しかし、私はそれが何に役立つのだろうかと思っています...

于 2012-07-11T14:26:59.853 に答える