在迭代上创建地图

时间:2017-06-04 16:44:58

标签: elixir

在我的模块中,我有一个函数,其目的是生成一个带有一些默认值的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,但我认为这在设计上是丑陋的,并不完全适合作为可迭代的地图。

0 个答案:

没有答案