2

私はScalaを始めたばかりで、デフォルト値で不変のプロパティを持つクラスを作成でき、コンストラクターで任意のプロパティ値の受け渡しを開始できるかどうか疑問に思っていました。

したがって、たとえばJavaScriptでは、次のことが可能です(最終結果は不変ではありませんが、アイデアは得られます)。

var myObj = function(params){
    this.a = params.a || 'default a';
    this.b = params.b || 'default b';
    this.c = params.c || 'default c';
};

new myObj({c:'override c', b:'override b'});

そして、デフォルト値と新しいbおよびcプロパティを使用して新しいオブジェクトを構築します...ご覧のとおり、ここのコンストラクターは、任意の数のオブジェクトプロパティを任意の順序で受け入れます。

したがって、Scalaで非常に簡単な例を取り上げます。

case class Customer(
    val id: Long = 0,
    val name: String = ""
)

私はこれができることを知っています:

val customer = Customer(0, "company")

しかし、私はこれをしたいと思います:

val customer = Customer{ name = "company" }

だから私は50人のコンストラクターで終わることはありません。

出来ますか?どのように?

4

1 に答える 1

6

javascriptのようにハッシュを渡す必要はありませんが、コンストラクターのパラメーターに値を割り当てるだけです。これは「名前付きパラメータ」と呼ばれ、次のようになります。Customer(name = "Peter")

于 2013-01-16T20:00:27.330 に答える