您如何在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