Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Maps 合并长生不老药地图_Maps_Elixir - Fatal编程技术网

Maps 合并长生不老药地图

Maps 合并长生不老药地图,maps,elixir,Maps,Elixir,如何合并这两个Elixir贴图: foo = %{a: 1, b: 2, c: [%{d: 3, e: 4}, %{d: 5, e: 6}]} bar = %{a: 1, b: 2, c: [%{d: 7, e: 8}, %{d: 9, e: 0}]} 。。。要获得以下结果: %{a: 1, b: 2, c: [%{d: 3, e: 4}, %{d: 5, e: 6}, %{d: 7, e: 8}, %{d: 9, e: 0}]} 简单的Map.merge(foo,bar)不会这样做,因为c

如何合并这两个Elixir贴图:

foo = %{a: 1, b: 2, c: [%{d: 3, e: 4}, %{d: 5, e: 6}]}
bar = %{a: 1, b: 2, c: [%{d: 7, e: 8}, %{d: 9, e: 0}]}
。。。要获得以下结果:

%{a: 1, b: 2, c: [%{d: 3, e: 4}, %{d: 5, e: 6}, %{d: 7, e: 8}, %{d: 9, e: 0}]}
简单的
Map.merge(foo,bar)
不会这样做,因为c的值是一个列表

提前谢谢你! 克里斯托夫

使用:

Map.merge(foo,bar,fn
_k、 v1,v2何时是列表(v1)和是列表(v2)->v1++v2列表
_k、 %%{}=v1,%%{}=v2->Map.merge(v1,v2)#Map
_k、 v1,v1->v1等于
_k、 v1,v2->{v1,v2}#不相等
(完)
#⇒%{a:1,b:2,
#c:[%{d:3,e:4},%{d:5,e:6},%{d:7,e:8},%{d:9,e:0}]}
您没有指定合并任何保存列表的规则,但是上面的规则可以轻松扩展以处理任何内容。现在它可以理解列表、映射、相等值和非相等值