【发布时间】:2018-11-02 22:33:21
【问题描述】:
我希望能够提取管道中元组的第 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]},假设我只想提取[1, 1, 3]
(对于这种特定情况,我可以使用fetch!,但我的实际代码不存在。)
我可以补充
|> Tuple.to_list
|> Enum.at(1)
有没有更好的方法不需要从每个元组中创建一个临时列表?
【问题讨论】: