конструкторы в 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, ожидая, что было бы законно назначать их впервые в любом конструкторе, но, похоже, я ошибался.

Я не совсем удовлетворен тем, что может быть только диким предположением, поэтому я был бы признателен, если бы кто-то мог дать мне более точную информацию по этому вопросу.

Ответы на вопрос(2)

Ваш ответ на вопрос