2014-10-28 14 views

Odpowiedz

19

mogli Państwo rura do Enum.into(%{}) lub użyj wyrażenia for, tj .:

iex> for {k, v} <- %{a: 1, b: 2}, into: %{}, do: {k, v + 1} 
%{a: 2, b: 3} 
0

Oto jeden pomysł:

def update_map map, [head|tail], func do 
    update_map(
     Dict.update(map, head, :unknown, func), 
     tail, 
     func 
    ) 
end 


def update_map map, [], _ do 
    map 
end 

Wtedy to nazwać:

iex(1)> d = %{:a => 1, :b => 2, :c => 3} 
%{a: 1, b: 2, c: 3} 
iex(2)> update_map(d, Dict.keys(d), fn v -> v + 1 end) 
%{a: 2, b: 3, c: 4}