生成一个 N 个自然数的序列
Generate a sequence of N natural numbers
在 Ruby 中可以使用 splat
[*1..5]
# => [1, 2, 3, 4, 5]
如何在 Elixir 中完成此操作?
我知道我可能会使用 reduce
但也许有更简单的方法?
Elixir 有 Ranges just like Ruby. They implement the Enumerable
protocol,因此在大多数情况下您不需要将它们转换为列表。范围的行为通常与列表相同:
iex> [1, 2, 3, 4, 5] |> Enum.map(fn x -> x*x end)
[1, 4, 9, 16, 25]
iex> 1..5 |> Enum.map(fn x -> x*x end)
[1, 4, 9, 16, 25]
但是,如果您出于某种原因确实需要一个列表,您可以通过 Enum.to_list
:
进行转换
iex> 1..5 |> Enum.to_list
[1, 2, 3, 4, 5]
在 Ruby 中可以使用 splat
[*1..5]
# => [1, 2, 3, 4, 5]
如何在 Elixir 中完成此操作?
我知道我可能会使用 reduce
但也许有更简单的方法?
Elixir 有 Ranges just like Ruby. They implement the Enumerable
protocol,因此在大多数情况下您不需要将它们转换为列表。范围的行为通常与列表相同:
iex> [1, 2, 3, 4, 5] |> Enum.map(fn x -> x*x end)
[1, 4, 9, 16, 25]
iex> 1..5 |> Enum.map(fn x -> x*x end)
[1, 4, 9, 16, 25]
但是,如果您出于某种原因确实需要一个列表,您可以通过 Enum.to_list
:
iex> 1..5 |> Enum.to_list
[1, 2, 3, 4, 5]