wil*_*des 11 javascript foreach elixir
你是如何在Elixir中获得的?在JavaScript中(大多数语言都有等价的),我可以遍历列表中的各个项目并执行一些副作用,例如输出到控制台.
[1,2,3].forEach(function(num) {
console.log(num);
});
//=> 1
//=> 2
//=> 3
Run Code Online (Sandbox Code Playgroud)
在长生不老药中是否有相同的含量?
小智 18
迭代通过集合通常用Enum模块处理. Enum.each/2如果你想产生副作用,那就是你要找的东西.
Enum.each/2 function有两个参数,你的集合和一个在集合的每个成员上运行的函数.
像这样:
iex(3)> Enum.each([1, 2, 3], fn x -> IO.puts x end)
1
2
3
:ok
Run Code Online (Sandbox Code Playgroud)
我最近写了一篇关于这篇文章的博文,详细介绍了这一点.该帖子是Elixir和Ruby之间的比较,但同样的逻辑适用于Javascript.
一种选择是使用理解:
for item <- items do
IO.inspect(item)
end
Run Code Online (Sandbox Code Playgroud)
另一种选择是枚举:
Enum.each items, fn(item) ->
IO.inspect(item)
end
Run Code Online (Sandbox Code Playgroud)
另一种选择是使用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]
Run Code Online (Sandbox Code Playgroud)
如果你想具体使用foreach,你可以使用 Erlang 的foreach/2:
:lists.foreach(fn a -> IO.puts a + a end, [1,2,3])
# 2
# 4
# 6
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5917 次 |
| 最近记录: |