例如,在 Play 框架中,

您会在 play.api.libs.json 包中看到一个案例类 JsPath 及其伴生对象定义如下

case class JsPath(path: List[PathNode] = immutable.this.Nil) extends Product with Serializable

object JsPath extends JsPath

一般来说,当你用它的伴随案例类扩展一个对象时,你会得到什么好处?

最佳答案

除了一些混淆之外没有任何好处,并且您可以将 JsPath 对象用作空 JsPath 。如果您需要一个空对象,如果您给它一个单独的名称(相当于 ListNil ),它可能更具可读性:

object EmptyJsPath extends JsPath(Nil)

或者你在同伴上定义一个 empty 方法(就像大多数其他集合类一样):
object JsPath {
  def empty = ...
}

关于scala - 一个对象在 Scala 中扩展了它的伴随案例类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17553888/

10-11 06:50