如何在长生不老药
How to forEach in Elixir
本文关键字:长生不老 更新时间:2023-09-26
如何在Elixir中获取每个元素?在JavaScript(和大多数语言都有类似的)中,我可以遍历列表中的各种项,并做一些有副作用的事情,比如输出到控制台。
[1,2,3].forEach(function(num) {
console.log(num);
});
//=> 1
//=> 2
//=> 3
在elixir中也有类似的吗?
遍历集合通常由Enum
模块处理。如果你想产生副作用,你要找的就是Enum.each/2
。
Enum.each/2
函数有两个参数:你的集合和一个在集合的每个成员上运行的函数。
一样:
iex(3)> Enum.each([1, 2, 3], fn x -> IO.puts x end)
1
2
3
:ok
我最近写了一篇关于这个的博客文章,其中有更多的细节。这篇文章比较了Elixir和Ruby,但同样的逻辑也适用于JavaScript。
一种选择是使用推导式:
for item <- items do
IO.inspect(item)
end
另一个选项是枚举:
Enum.each items, fn(item) ->
IO.inspect(item)
end
另一种选择是使用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]
如果您特别想使用foreach
,您可以使用Erlang的foreach/2
:
:lists.foreach(fn a -> IO.puts a + a end, [1,2,3])
# 2
# 4
# 6
相关文章: