2016-09-30 70 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 
相关问题