Elixir Language L'operatore del tubo


Esempio

L'operatore di pipe |> prende il risultato di un'espressione a sinistra e lo alimenta come primo parametro di una funzione a destra.

expression |> function

Usa Pipe Operator per concatenare le espressioni e per documentare visivamente il flusso di una serie di funzioni.

Considera quanto segue:

Oven.bake(Ingredients.Mix([:flour, :cocoa, :sugar, :milk, :eggs, :butter]), :temperature)

Nell'esempio, Oven.bake arriva prima di Ingredients.mix , ma viene eseguito per ultimo. Inoltre, potrebbe non essere ovvio che :temperature è un parametro di Oven.bake

Riscrivi questo esempio usando l'operatore di pipe:

[:flour, :cocoa, :sugar, :milk, :eggs, :butter]
|> Ingredients.mix
|> Oven.bake(:temperature)

dà lo stesso risultato, ma l'ordine di esecuzione è più chiaro. Inoltre, è chiaro che :temperature è un parametro della chiamata Oven.bake .

Si noti che quando si utilizza Pipe Operator, il primo parametro per ciascuna funzione viene riposizionato prima dell'operatore Pipe e quindi la funzione chiamata sembra avere un parametro in meno. Per esempio:

Enum.each([1, 2, 3], &(&1+1)) # produces [2, 3, 4]

equivale a:

[1, 2, 3]
|> Enum.each(&(&1+1))