У меня есть существующее приложение Scala, и оно использует классы case, которые затем сохраняются в MongoDB. Мне нужно ввести новое поле в класс case, но его значение получено из существующего поля.
Например, есть номер телефона, и я хочу добавить нормализованный номер телефона, сохранив исходный номер телефона. Я обновлю существующие записи в MongoDB, но мне нужно будет добавить эту функцию нормализации в существующий код сохранения и обновления.
Итак, есть ли в Scala какой-нибудь удобный ярлык для добавления «крючка» к определенному полю класса case? Например, в Java можно изменить установщик номера телефона.
Редактировать:
Решение в ответе Кристиана отлично работает само по себе, но в моем случае у меня есть значения по умолчанию для полей (я думаю, из-за Салата...)
case class Person(name: String = "a", phone: Option[String] = None, normalizedPhone: Option[String] = None)
object Person {
def apply(name: String, phone: Option[String]): Person = Person(name, phone, Some("xxx" + phone.getOrElse("")))
}
А если использовать что-то вроде: Person(phone = Some("s"))
Я возьму: Person = Person(a,Some(s),None)