如何更改Elixir地图中的所有值

Flo*_*low 14 functional-programming elixir

我看到updateDict模块中有一个,但是一个update_all改变所有值的方法呢?

我尝试这样做,Enum.map但类型改变了:

iex(6)> Enum.map(%{:a => 2}, fn {k, v} -> {k, v + 1} end)
[a: 3]
Run Code Online (Sandbox Code Playgroud)

Chr*_*ord 25

你可以管道Enum.into(%{})或使用for理解,即:

iex> for {k, v} <- %{a: 1, b: 2}, into: %{}, do: {k, v + 1}
%{a: 2, b: 3}
Run Code Online (Sandbox Code Playgroud)


Joe*_*man 5

您还可以这样做:

iex> Map.new(%{:a => 2}, fn {k, v} -> {k, v + 1} end)
%{:a => 3}
Run Code Online (Sandbox Code Playgroud)

但感觉标准库中应该有一些东西可以让这变得更容易(Map.??(%{:a => 2}, &(&1 + 1)))。