Я новичок в Scala и изучаю его шаг за шагом. Это может быть очень расплывчатым и тривиальным вопросом для других, но я хочу научиться у экспертов.
Мой вопрос заключается в том, как получить доступ к полям из вспомогательных конструкторов, как мы делаем в Java.
Чтобы прояснить ситуацию, позвольте мне привести простой пример на Java.
public class Person {
private String firstName;
private String lastName;
public Person() {
// No arg constructor
}
public Person(String firstName) {
this.firstName = firstName;
}
public Person(String firstName, String lastName) {
this(firstName);
this.lastName = lastName;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
}
Тестовый класс приведен ниже.
public class TestPerson {
public static void main(String[] args) {
Person p = new Person("Sambit");
System.out.println("First Name: " + p.getFirstName());
System.out.println("Last Name: " + p.getLastName());//<--- last name may be null
}
}
Как вы можете видеть, основываясь на требованиях,Я могу добавить новые конструкторы и поля с помощью методов установки геттера для доступа. Как я могу сделать это в Scala, я здесь не использую case case.
Мой эквивалентный класс scala приведен ниже.
class Person {
def this(firstName: String) {
this();
}
def this(firstName: String, lastName: String) {
this(firstName);
}
}
object TestPerson {
def main(args: Array[String]): Unit = {
var p: Person = new Person("Sambit", "Mishra");
println("Person: " + p)
println("Person Last Name: " + p); <--- Here I can not access last name,
}
}