4 elixir
常见的命令式编程语言提供了多次运行代码块的循环结构?例如for循环:伪代码:
for(i=0;i<256;++i){
expression one;
statement one;
many code goes here
}
Run Code Online (Sandbox Code Playgroud)
for循环中的大块代码将被执行多次.但作为函数式编程语言,Elixir不提供循环.我知道Enum模块提供了很多次迭代代码的功能.例如
Enum.each(0..99, fn(x) -> IO.puts "hello, world!" end)
Run Code Online (Sandbox Code Playgroud)
上面的代码将执行100次.打印100"你好,世界!" 但这只是一个单行的声明.如何在Elixir中执行大量代码?Elixir的正确方法是什么?我是Elixir的新手.你们能给我一个小样本代码来学习吗?非常感谢你们所有人!
你的问题中有足够好的解决方案.Enum.each是一种将X函数应用多次的真正方法.
也许如果我们将它格式化不同,你可能会看到你能做什么......
Enum.each(0..99, fn(x) ->
IO.puts "hello, world!"
end)
Run Code Online (Sandbox Code Playgroud)
该函数与任何其他函数一样,只是它是内联定义的.
所以,只需添加更多行代码......
Enum.each(0..99, fn(x) ->
IO.puts "hello, world!"
IO.puts x
end)
Run Code Online (Sandbox Code Playgroud)
如果要引用已定义的函数,可以传递函数签名:
defmodule Test do
def bar(x) do
IO.puts "hello, world!"
IO.puts x
end
def foo do
Enum.each(0..99, &bar/1)
end
end
Run Code Online (Sandbox Code Playgroud)
有很多方法可以做到这一点。您可以编写自己的递归函数或遵循此处提到的其他示例。
您还可以定义你的代码“块”作为一个单独的函数(匿名或命名),并在使用Enum.each或Enum.map依赖于究竟需要返回什么。
或实际用于这样的:
for x <- 0..10 do
yor_block_of_code
end
Run Code Online (Sandbox Code Playgroud)