Более чистый способ обновления вложенных структур
Скажи, у меня есть следующие два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
) обновить такие вложенные структуры?