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