我试图弄清楚如何以maps允许我使用相同键处理元素的方式合并两个.
例如,合并
#{"Ala" => 1,"kota" => 3}
同
#{"kota" => 4}
应该导致:
#{"Ala" => 1,"kota" => 7}
有Erlang中没有内置函数正是这样做的,但它可以用做maps:fold/3和maps:update_with/4这样的:
1> A = #{"Ala" => 1,"kota" => 3}.
#{"Ala" => 1,"kota" => 3}
2> B = #{"kota" => 4}.
#{"kota" => 4}
3> maps:fold(fun(K, V, Map) -> maps:update_with(K, fun(X) -> X + V end, V, Map) end, A, B).
#{"Ala" => 1,"kota" => 7}
代码基本上是这样的:对于B中的每个项目,如果A中存在相同的密钥,则获取值(V)并添加当前值(X).如果它不存在,则将值设置为V
| 归档时间: | 
 | 
| 查看次数: | 395 次 | 
| 最近记录: |