Я хочу иметь возможность извлечь N-й элемент кортежа в конвейере, не используя with
или иным образом не разбивая конвейер.Enum.at
будет работать идеально, за исключением того факта, что кортеж не является перечислением.
Вот мотивирующий пример:
colors = %{red: 1, green: 2, blue: 3}
data = [:red, :red, :blue]
data
|> Enum.map(&Map.fetch(colors, &1))
|> Enum.unzip
Это возвращает {[:ok, :ok, :ok], [1, 1, 3]}
и, скажем, я просто хочуextract [1, 1, 3]
(Для этого конкретного случая я мог бы использовать fetch!
, но для моего фактического кода, который не существует.)
Я мог бы добавить
|> Tuple.to_list
|> Enum.at(1)
Есть ли лучший способ сделать это, не требующий создания временного списка из каждого кортежа?