我试过
units = %{}
for s <- squares, u <- unitlist, s in u, do: Map.put(units, s, u)
似乎不起作用。我想创建一个地图,其中键在正方形中,值在unitlist中,而地图应该只包含在unitlist中的那些正方形。
最终,我喜欢像
这样的东西units = for s <- squares, u <- unitlist, s in u, ????
答案 0 :(得分:3)
哪个有效
该代码不会像您预期的那样工作。它的作用是在每次迭代时创建一个新的Map,但之前声明的units
映射将不会被修改,因为Elixir中的变量是不可变的。
您可以使用into
选项与for
一起创建地图。为此,循环体必须返回键和值的2元组。
units = for s <- squares, u <- unitlist, s in u, into: %{}, do: {s, u}