2016-06-11 14 views
0

Ich lerne gerade Elixir und ich versuche, dies zu tun:Wie wird Enum-Ausgabe an eine andere Enum-Funktion übergeben, die mehrere Argumente akzeptiert?

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} 

Ich möchte es als Rohr tun ... so etwas wie:

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

oder

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

Aber keiner von denen funktioniert. Ist das überhaupt möglich?

Antwort

1

Sie fehlen Klammern:

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

Oder mehr idiomatisch:

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

Ihre ursprüngliche Version würde ausgeführt werden, wie:

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

Sie Why Can't I Chain String.replace? für eine ausführliche Erklärung sehen von diesem.

+0

Super, danke Mann! – Nathan

Verwandte Themen