如何将Enum输出传递给另一个带有多个参数的Enum函数?

时间:2016-06-11 10:59:26

标签: elixir

我正在学习Elixir,而我正试图这样做:

list = Enum.with_index ~w[a n b e c r z b d]

#=> [{"a", 0}, {"n", 1}, {"b", 2}, {"e", 3}, {"c", 4}, {"r", 5}, {"z", 6}, {"b", 7},
 {"d", 8}]

Enum.into(list, %{})

#=> %{"a" => 0, "b" => 7, "c" => 4, "d" => 8, "e" => 3, "n" => 1, "r" => 5,
  "z" => 6}

我想把它做成一个管道......类似于:

Enum.with_index ~w[a n b e c r z b d] |> Enum.into(%{})

Enum.with_index ~w[a n b e c r z b d] |> Enum.into(&1, %{})

但这些都不奏效。这甚至可能吗?

1 个答案:

答案 0 :(得分:1)

您缺少括号:

Enum.with_index(~w[a n b e c r z b d]) |> Enum.into(%{})

或更具惯用性:

~w[a n b e c r z b d] |> Enum.with_index() |> Enum.into(%{})

您的原始版本将执行为:

Enum.with_index(~w[a n b e c r z b d] |> Enum.into(%{}))

您可以查看Why Can't I Chain String.replace?以获取详细说明。