私は「ScalafortheImpatient」の演習5.7を行っています。ここでは、コンストラクターでname:Stringを取り、空白で分割された名前から2つのプロパティfirstNameとlastNameを持つクラスPersonを作成する必要があります。私の最初の裁判は:
class Person(name:String) {
private val nameParts = name.split(" ")
val firstName = nameParts(0)
val lastName = nameParts(1)
}
問題は、namePartsが、実際にはコンストラクターのローカル環境内にのみ存在する必要があるのに、クラス内で常に表示されるプライベートフィールドとして残ることです。私が欲しいものに相当するJavaは次のようになります。
class Person{
private final String firstName;
private final String lastName;
Person(String name){
final String[] nameParts = name.split(" ");
firstName = nameParts[0];
lastName = nameParts[1];
}
}
ここで、namePartsは、私が目指しているコンストラクターを使用してのみ存在します。これをScalaでどのように行うことができるかについてのヒントはありますか?
注:私はより「Scalesque」な方法を見つけることになりました:
class Person(name:String) {
val firstName::lastName::_ = name.split(" ").toList
}
しかし、私はまだ私の質問に対する答えを得たいと思います。