在scala中的对象内重用case类

时间:2016-03-31 05:17:26

标签: scala

我有一个包含一个或多个案例类和相关方法的对象。我想在另一个对象中重用这个case类(它具有与此对象类似的特性,但也有一些差异化方法)。

private object abc {
    /* ... */

    case class xyz(..) { def someFunc(){} }

    object xyz { def apply() {} }
}

private object extendabc {

    // How to reuse case class xyz here?
}

1 个答案:

答案 0 :(得分:1)

如果您只想访问,可以使用此类代码。

private object abc {

case class xyz() { 
def someFunc(){} 
}

object xyz {  }

}

private object extendabc {
val a = new abc.xyz()
a.someFunc()
}

您需要这样调用,因为xyz是对象abc的嵌套成员。 看here

另请注意,您无法在案例类的伴随对象中定义apply方法,因为它提供了完全相同的apply()方法(具有相同的签名。