3

考虑到这个 typedef:

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

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

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

4

1 回答 1

10

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

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

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

编辑 :

您还可以在 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)
于 2013-10-29T15:37:55.447 回答