我有点困惑,使用scala中的伴侣对象。当你想提供多个构造函数时,通常你声明一个伴随对象并且重载方法apply
。但就是这两做这件事的方式之间的区别?:在伴侣对象中使用新的关键字内部应用方法
case class Node(....)
object Node {
def apply(...) = new Node(....) // 1 way
def apply(...) = Node(...) // second way
}
几乎我见过使用第一种形式的例子:
- When to use companion object factory versus the new keyword
- "new" keyword in Scala
- http://alvinalexander.com/scala/how-to-create-scala-object-instances-without-new-apply-case-class
但我的代码似乎使用这两种形式相同。使用new
关键字仅在我们拥有普通课程时才有意义? (不是案例课)?
因此,当我有一个case类,其中我重载'apply',最好是在'apply'内使用'new'创建对象,不是吗? – elbaulp
这不是更好。如果你愿意,你可以自由使用提供的'apply'。它将在内部调用'new'来创建实例。选择你喜欢的任何一个,只要确保你不递归地调用你自己的'apply'。 –
非常感谢。 – elbaulp