我正在学习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, %{})
但这些都不奏效。这甚至可能吗?
答案 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?以获取详细说明。