生成N个自然数的序列

时间:2015-05-02 21:20:50

标签: elixir

在Ruby中,可以使用splat

来实现
[*1..5]
# => [1, 2, 3, 4, 5]

如何在Elixir中完成?

我知道我可以使用reduce,但也许有更简单的方法吗?

1 个答案:

答案 0 :(得分:11)

Elixir就像Ruby一样Range。他们实施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]