2016-09-30 73 views
2

您如何在Elixir中使用ForEach?在JavaScript中(並且大多數語言都有相同的功能),我可以遍歷列表中的各種項目,並執行一些副作用,例如輸出到控制檯。如何在Elixir中使用

[1,2,3].forEach(function(num) { 
    console.log(num); 
}); 

//=> 1 
//=> 2 
//=> 3 

在靈藥中是否有等價物?

+2

'for'? http://elixir-lang.org/getting-started/comprehensions.html – Dogbert

回答

7

遍歷集合最常用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。

0

另一種選擇是使用Enum.map/2Enum.each/2總是返回:ok,而map/2遍歷列表並返回新值(相當於JavaScript的Array.map

iex(3)> Enum.map([1, 2, 3], fn x -> x * x end) 
[1, 4, 9] 
2

一種選擇是使用內涵:

for item <- items do 
    IO.inspect(item) 
end 

另一種選擇是枚舉:

Enum.each items, fn(item) -> 
    IO.inspect(item) 
end 
0

如果您想特別使用foreach,你可以用Erlang的foreach/2

:lists.foreach(fn a -> IO.puts a + a end, [1,2,3]) 
# 2 
# 4 
# 6 
相關問題