考虑这个typedef:
case class Outer(someVal: Int) {
case class Inner(someOtherVal: Int)
}
如何构造Inner
类型的对象,(即如何编写有效的scala语法)?
我希望Inner
范围限定为Outer
,以避免在同一个包中与不同的Outer实例发生名称冲突。
答案 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)