2

次のような簡単なクラスを受講してください。

class Person(name: String, age: Int) {}

さて、このクラスをインスタンス化するとき、私は通常、そのユーザーがとを使用できるようにしたいnameですage。好き:

val ronald = new Person("Ronald", 22)
val ronaldsName = ronald.name  // <-

もちろん、これは、と呼ばれるゲッターを定義するか、ケースクラスnameを作成しない限り機能しません。後者は簡単な解決策ですが、私はケースクラスを悪用しているような気がしますか?Person

それでも前者は私が単純にできないので少し不便です:

class Person(name: String, age: Int) {
  def name = name
}

したがって、nameクラスのコンストラクターの最初の名前を、personNameまたは_nameまたはなどの他の名前に変更する必要がありnます。しかし、それは一種の混乱を招き、私の目にははるかにエレガントではありません。それは同じ概念/変数/値なので、まったく同じ名前にする必要がありますよね?

それで...ここでの最良または正しい実践は何ですか?それを追加するのはとても魅力的ですcase

4

1 に答える 1

9

パラメータをクラスのパブリックフィールドに変換するには、追加する必要がありvalます。

class Person(val name: String, val age: Int)
             ^^^               ^^^

お気づきのように、ケースクラスはデフォルトでこれを行います。

于 2012-12-04T09:48:44.703 に答える