您如何在Elixir中使用ForEach?在JavaScript中(並且大多數語言都有相同的功能),我可以遍歷列表中的各種項目,並執行一些副作用,例如輸出到控制檯。如何在Elixir中使用
[1,2,3].forEach(function(num) {
console.log(num);
});
//=> 1
//=> 2
//=> 3
在靈藥中是否有等價物?
您如何在Elixir中使用ForEach?在JavaScript中(並且大多數語言都有相同的功能),我可以遍歷列表中的各種項目,並執行一些副作用,例如輸出到控制檯。如何在Elixir中使用
[1,2,3].forEach(function(num) {
console.log(num);
});
//=> 1
//=> 2
//=> 3
在靈藥中是否有等價物?
遍歷集合最常用Enum
模塊處理。 Enum.each/2
是你正在尋找如果你想產生副作用。
Enum.each/2
函數有兩個參數,你的集合和函數在集合的每個成員上運行。
像這樣:
iex(3)> Enum.each([1, 2, 3], fn x -> IO.puts x end)
1
2
3
:ok
我最近寫了一blog post關於這裏面進入更多的細節。這篇文章是Elixir和Ruby之間的比較,但是同樣的確切邏輯適用於Javascript。
另一種選擇是使用Enum.map/2
。 Enum.each/2
總是返回:ok
,而map/2
遍歷列表並返回新值(相當於JavaScript的Array.map
)
iex(3)> Enum.map([1, 2, 3], fn x -> x * x end)
[1, 4, 9]
一種選擇是使用內涵:
for item <- items do
IO.inspect(item)
end
另一種選擇是枚舉:
Enum.each items, fn(item) ->
IO.inspect(item)
end
如果您想特別使用foreach
,你可以用Erlang的foreach/2
:
:lists.foreach(fn a -> IO.puts a + a end, [1,2,3])
# 2
# 4
# 6
'for'? http://elixir-lang.org/getting-started/comprehensions.html – Dogbert