我有點困惑,使用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