我有一个非常深的地图,其中包含很多值,我只想更新其中的几个值,同时保留所有其余值。我以为
maps:merge/2
只是票证,但问题是它会替换每个键,一直到根。我只想更新叶子中的值。这就是 maps:merge/2
的作用:
>maps:merge(#{a => apple, b => #{c => cherry, d => date}}, #{b => #{c => cantaloupe}}).
#{a => apple, b => #{c => cantaloupe}}).
我想要的结果是
#{a => apple, b => #{c => cantaloupe, d => date}}
。我尝试与 maps:merge_with/3
合作,但无法弄清楚。有什么聪明的方法可以做到这一点吗?
有一个用于操作嵌套结构的库,如下所示:https://github.com/Shaienn/nested_maps
nested_maps:update/4
解决了这个确切的用例。不过,我对更简单的解决方案感兴趣。