Более чистый способ обновления вложенных структур

Скажи, у меня есть следующие дваcase classэс:

case class Address(street: String, city: String, state: String, zipCode: Int)
case class Person(firstName: String, lastName: String, address: Address)

и следующий случайPerson учебный класс:

val raj = Person("Raj", "Shekhar", Address("M Gandhi Marg", 
                                           "Mumbai", 
                                           "Maharashtra", 
                                           411342))

Теперь, если я хочу обновитьzipCode изraj тогда мне придется сделать:

val updatedRaj = raj.copy(address = raj.address.copy(zipCode = raj.address.zipCode + 1))

С большим количеством уровней вложения это становится еще более ужасным. Есть ли более чистый способ (что-то вроде Clojure'supdate-in) обновить такие вложенные структуры?

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

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