В Elixir, как диапазон может быть преобразован в список? Я могу объявить диапазон следующим образом: range = 1..10 Есть ли способ конвертировать диапазон в список? Ответ 1 Enum.to_list/1 - это то, что вы ищете: iex(3)> Enum.to_list 1..10 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] Ответ 2 Общий способ преобразования перечислимого в конкретный собираемый файл 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} Ответ 3 Используйте Enum.map/2 range = 1..10 Enum.map(range, fn(x) -> x end) или Enum.map(range, &(&1)) Ответ 4 Используйте оператор конвейера 1..10 |> Enum.to_list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] а затем вы можете применить к нему дальнейшие преобразования, например 1..10 |> Enum.to_list |> Enum.sum 55
Ответ 1 Enum.to_list/1 - это то, что вы ищете: iex(3)> Enum.to_list 1..10 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Ответ 2 Общий способ преобразования перечислимого в конкретный собираемый файл 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}
Ответ 3 Используйте Enum.map/2 range = 1..10 Enum.map(range, fn(x) -> x end) или Enum.map(range, &(&1))
Ответ 4 Используйте оператор конвейера 1..10 |> Enum.to_list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] а затем вы можете применить к нему дальнейшие преобразования, например 1..10 |> Enum.to_list |> Enum.sum 55