Scala语法如何创建嵌套案例类的实例

时间:2013-10-29 15:29:03

标签: scala inner-classes case-class

考虑这个typedef:

case class Outer(someVal: Int) {
  case class Inner(someOtherVal: Int)
}

如何构造Inner类型的对象,(即如何编写有效的scala语法)?

我希望Inner范围限定为Outer,以避免在同一个包中与不同的Outer实例发生名称冲突。

1 个答案:

答案 0 :(得分:8)

Inner在外部实例的范围内。 所以,你可以这样写:

val res = new Outer(4)
val res2 = new res.Inner(2)

但是,我认为这不是你想要的。 为避免名称冲突,您可以使用包,它是为此而制作的。

编辑:

你也可以在Outer的伴侣对象中定义Inner,就像om-nom-nom所说:

case class Outer(someVal : Int)
object Outer {
  case class Inner(otherVal : Int)
}

val res = Outer(5)
val in = Outer.Inner(6)