【问题标题】:Scala syntax how to create an instance of a nested case classScala语法如何创建嵌套案例类的实例
【发布时间】:2013-11-08 20:42:57
【问题描述】:

考虑到这个 typedef:

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

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

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

【问题讨论】:

  • 你确定要 Inner 是 instance 类,而不是 class 类(在 Java 中你写 static为以后)?如果不是,您必须在同伴中定义 Inner,否则 val x = Outer(1); x.Inner(2) 将起作用

标签: scala inner-classes case-class


【解决方案1】:

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

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)

【讨论】:

猜你喜欢
  • 2018-08-03
  • 2019-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多