2つのリストを一度に繰り返したいのですが、どうやってその方法を見つけ出すことはできません。複数のリストを持つことができるforループは、ループのネストとして動作し、私はEnum
に精通していませんが、そこには解決策があります。エリクサー2つのリストを一度に繰り返して新しいリストを作成する方法は?
のPython、Tclのこの
を達成するためにzip(list_1,list_2)
とenumerate(list_1)
を持っている私にとっても簡単です:
% foreach var1 [list 1 3] var2 [list 2 4] {
puts "$var1 $var2"
}
1 2
3 4
しかし、私はエリクシールでそれを行う方法を見つけ出すことはできません。
私はこの
[%{"a" => "1539", "b" => "300"},
%{"a" => "4095", "b" => "0"},
%{"a" => "5371", "b" => "0"},
%{"a" => "7524", "b" => "0"},
%{"a" => "8267", "b" => "27"}]
のようなマップのリストを持っていると私は同じ大きさの項目のリストを持っているので、私はそれをしたい理由は次のとおりです。
["a","b","c","d","e"]
およびI」マップ内の要素の1つが特定の条件(0ではなく)である場合、それらをループで一緒に実行してアイテムを置き換えることが好きです:
[%{"a" => "a", "b" => "300"}, # notice the change in element "a"
%{"a" => "4095", "b" => "0"},
%{"a" => "5371", "b" => "0"},
%{"a" => "7524", "b" => "0"},
%{"a" => "e", "b" => "27"}] # notice the change in element "a"
とにかく
誰かが列挙を理解するのを助けることができますか、またはエリキシルの2つのリストを反復する方法を教えてください。
list_of_maps
|> Enum.zip(list_of_items)
|> Enum.map(fn {map, item} ->
if (map["b"] == "0"), do: map, else: Map.put(map, "a", item)
end)
あなたは[ 'Enum'](HTTPS経由見たことが://hexdocs.pm/elixir/Enum.html)または['List'](https://hexdocs.pm/elixir/List.html)docs?彼らは両方ともジップ機能を持っています。 –