与Elixir的步骤列表

Dan*_*lia 6 elixir

有人可以提供一个关于如何迭代列表但一次批量x的建议吗?

例如:

如果存在功能:

["1","2","3","4","5","6","7","8","9","10"].step(5)|> IO.puts
Run Code Online (Sandbox Code Playgroud)

会产生两次迭代:

12345

678910

我相信Stream.iterate/2是解决方案但是我给出一个数组的尝试并没有证明是有利可图的.

Gaz*_*ler 11

Enum.chunk/2(或Stream.chunk/2)会将列表分解为x个元素的子列表:

iex> [1,2,3,4,5,6,7,8,9,10] |> Enum.chunk(5)                   
[[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]]
Run Code Online (Sandbox Code Playgroud)

然后,您可以对每个列表执行操作,例如:

iex> ["1","2","3","4","5","6","7","8","9","10"]
     |> Enum.chunk(5)
     |> Enum.each(fn x -> IO.puts x end)
12345
678910
Run Code Online (Sandbox Code Playgroud)

  • @KshitijMittal在这种情况下你可以使用http://elixir-lang.org/docs/v1.0/elixir/Enum.html#chunk/4`list |> Enum.chunk(5,5,[])` (3认同)