访问类内部的类

时间:2012-07-10 13:20:06

标签: class scala object

让我说我有一个班级:

class MyClass {
  val value = new MyClass
}

这不起作用,它会引发堆栈错误。 有没有办法使这项工作,所以value是MyClass的实例?

3 个答案:

答案 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
}

然而,我想知道这对...有什么用处。