我希望能够在不使用with
或以其他方式破坏管道的情况下提取管道中元组的第N个项目。 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]}
,假设我只想提取[1, 1, 3]
(对于这种特定情况,我可以使用
fetch!
,但是对于我不存在的实际代码。)我可以补充
|> Tuple.to_list
|> Enum.at(1)
是否有更好的方法可以做到,而无需在每个元组中创建一个临时列表?
最佳答案
iex(1)> {[:ok, :ok, :ok], [1, 1, 3]} |> elem(1)
[1, 1, 3]
关于tuples - 在管道中提取元组的第二个元素,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50496783/