如何从理解中创建地图?

时间:2017-09-12 10:41:25

标签: elixir

我试过

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, ????

1 个答案:

答案 0 :(得分:3)

  

哪个有效

该代码不会像您预期的那样工作。它的作用是在每次迭代时创建一个新的Map,但之前声明的units映射将不会被修改,因为Elixir中的变量是不可变的。

您可以使用into选项与for一起创建地图。为此,循环体必须返回键和值的2元组。

units = for s <- squares, u <- unitlist, s in u, into: %{}, do: {s, u}
相关问题