在Elixir中,一个范围如何转化为一个列表?

我可以声明一个范围如下:

range = 1..10 

有没有办法将范围转换为列表?

Enum.to_list/1是你要找的东西:

 iex(3)> Enum.to_list 1..10 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 

将enumerable转换为特定Enum.into的通用方法是Enum.into

 Enum.into 1..10, [] #=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 

你也可以传递一个转换函数作为第三个参数:

 Enum.into 1..10, %{}, &({&1, &1}) #=> %{1 => 1, 2 => 2, 3 => 3, 4 => 4, 5 => 5, 6 => 6, 7 => 7, 8 => 8, 9 => 9, 10 => 10} 

使用Enum.map/2

 range = 1..10 Enum.map(range, fn(x) -> x end) 

要么

 Enum.map(range, &(&1)) 

使用pipe道操作员

 1..10 |> Enum.to_list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 

然后你可以像对其进行进一步的转换

 1..10 |> Enum.to_list |> Enum.sum 55