map = %{
shares: [%{name: "Junaid0"}]
}
add_shares = [%{name: "Junaid1"}, %{name: "Junaid2"}]
Straigt列表连接
%{map | shares: map[:shares] ++ add_shares}
%{map | shares: (for share <- add_shares, into: map[:shares], do: share)}
Enum.reduce
Enum.reduce(add_shares, map, fn share, acc ->
%{acc | shares: [share | acc[:shares]]}
end)
Enum.into
%{map | shares: Enum.into(add_shares, map[:shares], & &1)}
FWIW:
将元素添加到现有列表中:
list = []
element = 42
list1 = [element | list]
#â [42]
list2 = [element | list1]
#â [42, 42]
Enum.reduce(email_array, {[], []}, fn
email, {shares, changes} = _acc ->
with {:found_user, sharee} <- ensure_user(email) do
case :camera_share do
{:ok, camera_share} ->
{[camera_share | shares], changes}
{:error, changeset} ->
{shares, [changeset | changes]}
end
else
# basically the same
# make sure ALL branches return an acumulator
end
end)
上面的将返回一个元组
{shares, changes}