2016-12-14 3 views
1

List(:erlang.memory())から変換したMapを返す関数があります。期待通りに機能しますが、それは美しいとは思われません。スニペットをよりエリクシールな方法(より美しいロジックを意味する)に改良するにはどうすればよいですか?ListをMapに変換する、Elixirの方法

{{:total, total}, {:processes, processes}, {:processes_used, processes_used}, {:system, system}, {:atom, atom}, {:atom_used, atom_used}, {:binary, binary}, {:code, code}, {:ets, ets}} = 
    :erlang.memory() 
    |> List.to_tuple() 

params = %{ 
    total: total, 
    processes: processes, 
} 

答えて

6
iex(1)> :erlang.memory() 
[total: 20258296, processes: 5377080, processes_used: 5370936, system: 14881216, 
atom: 264529, atom_used: 255982, binary: 72440, code: 6322711, ets: 335736] 

iex(2)> :erlang.memory() |> Enum.into(%{}) 
%{atom: 264529, atom_used: 259196, binary: 149136, code: 6564510, ets: 347720, 
    processes: 5518032, processes_used: 5516752, system: 15248920, 
    total: 20766952} 

Enum.into/2救助に来ます。

NB下記の@Dogbertによる貴重なコメントも参照してください。

+6

この場合、 '|> Map.new'もあります。 – Dogbert

+0

Enum.into/2とMap.new/1は、エレガンスとエリクシールの解決策です。ありがとうございました!! – hykw

関連する問題