循环遍历Map的键值对

She*_*yar 20 elixir

如何在Elixir中迭代地图的键值对?

这不起作用:

my_map = %{a: 1, b: 2, c: 3}

Enum.each my_map, fn %{k => v} ->
    IO.puts "#{k} --> #{v}"
end
Run Code Online (Sandbox Code Playgroud)

She*_*yar 34

事实证明,你Map完全按照你的方式进行迭代Keyword List(即使用a tuple):

Enum.each  %{a: 1, b: 2, c: 3},  fn {k, v} ->
  IO.puts "#{k} --> #{v}"
end 
Run Code Online (Sandbox Code Playgroud)

理解也有效:

for  {k, v}  <-  %{a: 1, b: 2, c: 3}  do
  IO.puts "#{k} --> #{v}"
end
Run Code Online (Sandbox Code Playgroud)

注意:如果您使用Enum.map/2并返回元组,则最终会得到关键字列表而不是Map.要将其转换为地图,请使用Enum.into/2.