Tracce
/
Elixir
Elixir
/
Programma
/
Operatore pipe
Op

Operatore pipe in Elixir

10 esercizi

Informazioni su Operatore pipe

L'operatore |> è chiamato operatore pipe. Si può usare per concatenare tra loro le chiamate di funzione in modo che il valore restituito dalla chiamata precedente venga passato come primo argomento alla chiamata successiva.

String.replace_suffix(String.upcase(String.duplicate("go ", 3)), " ", "!")

# versus

"go "
|> String.duplicate(3)
|> String.upcase()
|> String.replace_suffix(" ", "!")

Si può usare anche su una sola riga:

"go " |> String.duplicate(3) |> String.upcase() |> String.replace_suffix(" ", "!")

Le funzioni di Kernel di solito si usano ovunque senza il nome del modulo Kernel, ma il nome del modulo è necessario quando si usano queste funzioni in una catena di pipe. Per esempio, 2 * 3 == 6 si può anche scrivere così:

2 |> Kernel.*(3) |> Kernel.==(6)

Decidere quando usare l'operatore pipe e quando no è una questione di preferenza personale. Alcuni sviluppatori Elixir amano seguire queste regole:

  • Non usare l'operatore pipe quando fai una singola chiamata di funzione.

    # do
    String.split("hello", "")
    
    # don't
    "hello" |> String.split("")
    
  • Non creare funzioni anonime direttamente nella catena di pipe.

    # do
    take_n_letters = fn n -> Enum.take(?a..?z, n) end
    2 |> Kernel.*(3) |> take_n_letters.()
    
    # don't
    2 |> Kernel.*(3) |> (fn n -> Enum.take(?a..?z, n) end).()
    
  • Inizia sempre una catena di pipe con una variabile o un valore letterale, non con una chiamata di funzione.

    # do
    "hello" |> String.upcase() |> String.split("")
    
    # don't
    String.upcase("hello") |> String.split("")
    
Modifica tramite GitHub Il collegamento si apre in una nuova finestra o scheda

Impara Operatore pipe

La pratica è bloccata

Sblocca 5 altri esercizi per esercitarti su Operatore pipe