在我的模块中,我有一个函数,其目的是生成一个带有一些默认值的Map,给定Elixir中的不变性我无法找到实现此目的的正确方法:
defmodule Teams do
def past_matches() do
[
team1: %{team2: %{f: 0, a: 1}, team3: %{f: 1, a: 3}},
team2: %{team1: %{f: 3, a: 0}, team3: %{f: 2, a: 0}},
]
end
def initialize(matches, table) do
Enum.each matches, fn {team, _scores} ->
Map.put local, team, %{total: 0}
end
end
def run() do
table = %{}
past_matches()
|> initialize(table)
end
end
initialize()
上的想法是使用table
填充地图%{team1: %{total: 0}, team2: %{total: 0}, team3: %{total: 0}}
我知道变量table
在管道函数完成后仍然是一个空的Map但是动态创建这样的临时结构的Elixir方法是什么?
相关:Elixir - Looping through and adding to map,但我认为这在设计上是丑陋的,并不完全适合作为可迭代的地图。