你是如何在forEach中使用药剂的?在JavaScript (大多数语言都有类似的语言)中,我可以迭代列表中的各个项目,并做一些有副作用的事情,比如输出到控制台。
[1,2,3].forEach(function(num) {
console.log(num);
});
//=> 1
//=> 2
//=> 3灵丹妙药中有类似的药吗?
发布于 2016-09-30 19:30:56
迭代一个集合最常用的是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。
发布于 2016-09-30 20:46:01
一种选择是使用理解:
for item <- items do
IO.inspect(item)
end另一种选择是枚举:
Enum.each items, fn(item) ->
IO.inspect(item)
end发布于 2016-09-30 20:18:41
另一种选择是使用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]https://stackoverflow.com/questions/39798694
复制相似问题