Scala に名前付きコンストラクターはありますか?
2 に答える
5
「名前付きコンストラクター」の意味によって異なりますが、はい、コンストラクターをオーバーロードできます。Scala のケース クラスのオーバーロード コンストラクターを参照してください。
また、クラス (静的シングルトン) のコンパニオン オブジェクトにファクトリ メソッドを配置することもできます。
于 2010-05-08T22:08:36.957 に答える
3
あるとは思いませんが、名前付きコンストラクターのイディオムは、クラス コンストラクターを呼び出すオブジェクト メソッドによってサポートできます。通常、Scala では、関数呼び出し構文を使用できるため、apply メソッドが使用されます。
val mc = MyClass(a, b, c)
次の定義で
object MyClass {def apply(a: Atype, b: Btype, c: Ctype) = new MyClass(a, b, c)}
または、次のようなものが必要な場合
val mc = MyClass.create(a, b, c)
それは単に
object MyClass {def create(a: Atype, b: Btype, c: Ctype) = new MyClass(a, b, c)}
コンパニオン オブジェクトに限定されませんが、プライベート コンストラクターとプロテクト コンストラクターでは、コンパニオン オブジェクトを直接使用するか、クラス コンストラクターにアクセスするためのプロキシとして使用する必要があります。
于 2010-05-08T22:59:58.847 に答える