1

Scala に名前付きコンストラクターはありますか?

4

2 に答える 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 に答える