我正在寻找一种简洁的方法来更新Elm(0.18)中记录内的嵌套值.
给出以下示例:
person = { name = "Steven", address = { country = "Spain", city = "Barcelona" } }
Run Code Online (Sandbox Code Playgroud)
我可以使用以下表达式将person.name更新为"Steve":
{ person | name = "Steve" }
Run Code Online (Sandbox Code Playgroud)
但是,我正在寻找一种更新嵌套值的方法.例如,我想将person.address.city更新为"Madrid".我尝试了以下方法:
{ person | address.city = "Madrid" }
{ person | address = { address | city = "Madrid" } }
{ person | address = { person.address | city = "Madrid" } }
Run Code Online (Sandbox Code Playgroud)
编译器拒绝所有这些变化.我看到的最短有效选项是:
let personAddress = person.address in { person | address = { personAddress | city = "Madrid" } } …Run Code Online (Sandbox Code Playgroud)