在 elixir 中迭代地图和更新值?

Ste*_*hen 1 elixir

我有一个地图/结构数据:

%{foo: "102", zoo: "103", bar: "104"}
Run Code Online (Sandbox Code Playgroud)

我想迭代地图并将值更新为整数,我该怎么做?

result = %{foo: 102, zoo: 103, bar: 104}
Run Code Online (Sandbox Code Playgroud)

干杯

Ale*_*kin 5

此外,使用Kernel.SpecialForms.for/1列表理解:

for {k, v} <- %{foo: "102", zoo: "103", bar: "104"},
  into: %{},
  do: {k, String.to_integer(v)}
#? %{bar: 104, foo: 102, zoo: 103}
Run Code Online (Sandbox Code Playgroud)

或者,直接使用Enum.reduce/3.

Enum.reduce(
  %{foo: "102", zoo: "103", bar: "104"},
  %{},
  fn {k, v}, acc ->
    Map.put(acc, k, String.to_integer(v))
  end
)
#? %{bar: 104, foo: 102, zoo: 103}
Run Code Online (Sandbox Code Playgroud)