scala でコンパニオン オブジェクトを使用するのに少し混乱しています。複数のコンストラクターを提供する場合は、通常、コンパニオン オブジェクトを宣言し、apply
メソッドをオーバーロードします。しかし、この2つの方法の違いは何ですか?:
case class Node(....)
object Node {
def apply(...) = new Node(....) // 1 way
def apply(...) = Node(...) // second way
}
私が見たほとんどすべての例は、最初の形式を使用しています。
- コンパニオン オブジェクト ファクトリと new キーワードをいつ使用するか
- Scala の「new」キーワード
- http://alvinalexander.com/scala/how-to-create-scala-object-instances-without-new-apply-case-class
しかし、私のコードは両方の形式を使用して同じように動作するようです。キーワードの使用new
は、通常のクラスがある場合にのみ意味がありますか? (ケースクラスではない)?