Я нахожусь в упражнении 5.7 из Scala для Impatient ", где мне нужно создать класс Person, который принимает имя: String on constructor и имеет 2 свойства firstName и lastName, заполненные из имени, разделенного пробелом. Мое первое испытание:
class Person(name:String) {
private val nameParts = name.split(" ")
val firstName = nameParts(0)
val lastName = nameParts(1)
}
Проблема заключается в том, что nowPart остается как частное поле, всегда видимое внутри класса, когда на самом деле должно существовать только внутри локальной среды конструктора. Явный эквивалент того, что я хочу, будет:
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
}
но я все равно хочу получить ответ на мой вопрос.