Tracks
/
Elixir
Elixir
/
Lehrplan
/
Pipe-Operator
Pi

Pipe-Operator in Elixir

10 Übungen

Über Pipe-Operator

Der |>-Operator heißt Pipe-Operator. Mit ihm lassen sich Funktionsaufrufe so verketten, dass der Rückgabewert des vorherigen Funktionsaufrufs als erstes Argument an den nächsten Funktionsaufruf übergeben wird.

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

# versus

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

Er lässt sich auch in einer einzigen Zeile verwenden:

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

Kernel-Funktionen werden normalerweise überall ohne den Modulnamen Kernel verwendet, aber der Modulname ist nötig, wenn du diese Funktionen in einer Pipe-Kette verwendest. Zum Beispiel lässt sich 2 * 3 == 6 auch so schreiben:

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

Ob man den Pipe-Operator verwendet oder nicht, ist Geschmackssache. Manche Elixir-Entwickler folgen gern diesen Regeln:

  • Verwende den Pipe-Operator nicht für einen einzelnen Funktionsaufruf.

    # do
    String.split("hello", "")
    
    # don't
    "hello" |> String.split("")
    
  • Erstelle keine anonymen Funktionen direkt in der Pipe-Kette.

    # 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).()
    
  • Beginne eine Pipe-Kette immer mit einer Variable oder einem Literalwert, nicht mit einem Funktionsaufruf.

    # do
    "hello" |> String.upcase() |> String.split("")
    
    # don't
    String.upcase("hello") |> String.split("")
    
Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab

Lerne Pipe-Operator

Das Üben ist gesperrt

Schalte 5 weitere Übungen frei, um Pipe-Operator zu üben