如何仅替换地图中的某些值,同时保留所有其他值?

问题描述 投票:0回答:1

我有一个非常深的地图,其中包含很多值,我只想更新其中的几个值,同时保留所有其余值。我以为

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
合作,但无法弄清楚。有什么聪明的方法可以做到这一点吗?

erlang
1个回答
0
投票

有一个用于操作嵌套结构的库,如下所示:https://github.com/Shaienn/nested_maps

nested_maps:update/4
解决了这个确切的用例。不过,我对更简单的解决方案感兴趣。

© www.soinside.com 2019 - 2024. All rights reserved.