Цикл через пары ключей ключа

Как перебирать пары ключ-значение карты в Elixir?

Это не работает:

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

Enum.each my_map, fn %{k => v} ->
    IO.puts "#{k} --> #{v}"
end

Ответ 1

Оказывается, вы выполняете итерацию по Map точно так же, как и по Keyword List (т.е. вы используете tuple):

Enum.each  %{a: 1, b: 2, c: 3},  fn {k, v} ->
  IO.puts "#{k} --> #{v}"
end 

Понимания также работают:

for  {k, v}  <-  %{a: 1, b: 2, c: 3}  do
  IO.puts "#{k} --> #{v}"
end

Примечание. Если вы используете Enum.map/2 и Enum.map/2 кортеж, в итоге вы получите список ключевых слов вместо карты. Чтобы преобразовать его в карту, используйте Enum.into/2.