Я просмотрел некоторый код от коллеги и наткнулся на класс дел, который по умолчанию неизменен.
нижеуказанный класс case может быть изменен, поэтому мой вопрос: как это возможно, поскольку классы case являются неизменяемыми, но в этой конструкции я могу изменить параметры класса case?
case class RegisterCustomerRequest(`first-name`: String,
`last-name`: String,
`house-details`: String,
street: String,
zipcode: String,
city: String
extends WcRequestData {
def this(cardHolderData: CardHolderData,
registrationCode: RegistrationCode,
customerNumber: Long,
cardDesignImageId: String) =
this(`first-name` = cardHolderData.firstname,
`last-name` = cardHolderData.lastname,
street = cardHolderData.streetAndNumber,
zipcode = cardHolderData.zipCode,
city = cardHolderData.city,
# `house-details` =
s"${if (cardHolderData.employerName.contains("&"))
cardHolderData.employerName.replace("&" , " & ") else " /
"}${cardHolderData.employerName} ")#
}
почему я могуопределить метод def this
, который может изменять значения параметров.Для чего эта конструкция хороша для этого хорошего стиля кодирования?