конструкторы в Scala (основной / вспомогательный / основной по умолчанию)
Довольно простое упражнение изCay Horstmann's книга« Scala for the impatient » продолжает озадачивать меня Это оprimary
,auxiliary
а такжеdefault primary
Конструкторы & # xA0 ;:
ex 5.10 : Consider the class
<code>class Employee(val name: String, var salary: Double) { def this() { this("John Q. Public", 0.0) } } </code>
Rewrite it to use explicit fields and a default primary constructor.
Я не уверен, что должен делать. Могут ли некоторые из вас предложить решение & # xA0 ;?
Однако попытка выполнить это упражнение, возможно, заставила меня осознать то, что я раньше не замечал о первичном конструкторе иval
поля (как вы можете видеть, я не совсем уверен) & # xA0 ;:
Прав ли я, если скажу, чтоval
поле (какname
вEmployee
класс выше) может быть инициализирован только черезprimary
конструктор, а неauxiliary
один ? В последнем случае это будет рассматриваться компилятором как переназначениеval
поле, вызывающее ошибку.
Сначала я подумалval
Поля как грубый эквивалент окончательных полей в Java, ожидая, что было бы законно назначать их впервые в любом конструкторе, но, похоже, я ошибался.
Я не совсем удовлетворен тем, что может быть только диким предположением, поэтому я был бы признателен, если бы кто-то мог дать мне более точную информацию по этому вопросу.