Parcours
/
Elixir
Elixir
/
Programme
/
Opérateur pipe
Op

Opérateur pipe en Elixir

10 exercices

À propos de Opérateur pipe

L'opérateur |> est appelé l'opérateur pipe. Il permet d'enchaîner des appels de fonction, de sorte que la valeur renvoyée par l'appel précédent soit passée comme premier argument à l'appel suivant.

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

# versus

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

Il peut aussi s'utiliser sur une seule ligne :

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

Les fonctions de Kernel s'utilisent généralement partout sans le nom du module Kernel, mais ce nom est nécessaire pour utiliser ces fonctions dans une chaîne de pipes. Par exemple, 2 * 3 == 6 peut aussi s'écrire :

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

Choisir quand utiliser l'opérateur pipe et quand ne pas l'utiliser relève d'une préférence personnelle. Certains développeurs Elixir aiment suivre ces règles :

  • N'utilise pas l'opérateur pipe pour un seul appel de fonction.

    # do
    String.split("hello", "")
    
    # don't
    "hello" |> String.split("")
    
  • Ne crée pas de fonction anonyme directement dans la chaîne de pipes.

    # 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).()
    
  • Commence toujours une chaîne de pipes par une variable ou une valeur littérale, jamais par un appel de fonction.

    # do
    "hello" |> String.upcase() |> String.split("")
    
    # don't
    String.upcase("hello") |> String.split("")
    
Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet

Apprends Opérateur pipe

L'entraînement est verrouillé

Déverrouille 5 exercices de plus pour t'entraîner sur Opérateur pipe