我可以声明一个范围如下:
range = 1..10
Run Code Online (Sandbox Code Playgroud)
有没有办法将范围转换为列表?
Chr*_*ord 99
Enum.to_list/1
正是你要找的:
iex(3)> Enum.to_list 1..10
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Run Code Online (Sandbox Code Playgroud)
Pat*_*ity 16
将枚举转换为特定可收集项的通用方法是Enum.into
:
Enum.into 1..10, []
#=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Run Code Online (Sandbox Code Playgroud)
您还可以将转换函数作为第三个参数传递:
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}
Run Code Online (Sandbox Code Playgroud)
使用 Enum.map/2
range = 1..10
Enum.map(range, fn(x) -> x end)
Run Code Online (Sandbox Code Playgroud)
要么
Enum.map(range, &(&1))
Run Code Online (Sandbox Code Playgroud)
使用管道运算符
1..10 |> Enum.to_list
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Run Code Online (Sandbox Code Playgroud)
然后你可以对其应用进一步的转换,例如
1..10 |> Enum.to_list |> Enum.sum
55
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
10707 次 |
最近记录: |