mbonnin
11/18/2021, 3:17 PM// How do I do this with Optics?
val user = user.copy(
address = user.address.copy(
city = newCity
)
)
Ties
11/18/2021, 3:25 PMval addressLens: Lens<User, Adress> = Lens(
get = { it.address},
set = { s : User, v : Adress> -> s.copy(address= v) }
)
val cityLens: Lens<Adress, City> = Lens(
get = { it.city},
set = { s : Adress, v : City> -> s.copy(city= v) }
)
val adressCity = addressLens.compose(cityLens)
adressCity.modify(user) { newCity }
mbonnin
11/18/2021, 3:27 PMTies
11/18/2021, 3:27 PMmbonnin
11/18/2021, 3:28 PMTies
11/18/2021, 3:29 PM@optics data Person(...) { companion object }
so add an @optics annotation, and add a companion object and make sure you have the optics maven/gradle plugin configuredmbonnin
11/18/2021, 3:33 PMTies
11/18/2021, 3:35 PM