8

これらの2つのクラスと、インスタンスの作成方法を検討してください。

class Person1(val name: String)

val p1 = new Person1("John");

と:

abstract class Person2 {
  val name: String
}

val p2 = new Person2 {
  val name = "John"
}

なぜ後者(Person2)バージョンを好むのでしょうか?このような宣言を行うたびに、新しいサブクラスが作成されます。また、コードは少し冗長で読みにくくなりますが、2番目のイディオムはProgramminginScalaの本全体で数回使用されています。単純なフィールドに対する利点は何ですか?

4

1 に答える 1

9

単純なユースケースの1つは、コンストラクター引数を持つことができないトレイトを使用する場合です。

于 2011-07-31T14:48:32.683 に答える