Tracks
/
Elixir
Elixir
/
Lehrplan
/
Funktionen mit mehreren Klauseln
Fu

Funktionen mit mehreren Klauseln in Elixir

72 Übungen

Über Funktionen mit mehreren Klauseln

In Elixir kann eine einzelne Funktion mehrere Klauseln haben. Das erreicht man durch Pattern Matching der Funktionsargumente und durch die Verwendung von Guards.

# pattern matching the argument
def number(7) do
  "Awesome, that's my favorite"
end

# using a guard
def number(n) when is_integer(n) do
  "That's not my favorite"
end

def number(_n) do
  "That's not even a number!"
end
  • Nutze mehrere Funktionsklauseln, um Steuerlogik aus Funktionen herauszuziehen.
  • Die Klauseln werden der Reihe nach von oben nach unten in der Quelldatei versucht, bis eine erfolgreich ist.
  • Wenn keine erfolgreich ist, löst die BEAM-VM einen FunctionClauseError aus.
  • Wenn Argumentvariablen weder im Funktionskörper noch in einem Guard verwendet werden, sollte ihnen ein _ vorangestellt werden; andernfalls gibt der Compiler eine Warnung aus.
  • Anonyme Funktionen können ebenfalls mehrere Klauseln haben.
    fn
      13 -> "Awesome, that's my favorite"
      _ -> "That's not my favorite"
    end
    

Beachte, dass Funktionen mit mehreren Klauseln nicht mit der Funktionsüberladung verwechselt werden sollten, die du vielleicht aus anderen Programmiersprachen kennst. In Elixir werden Funktionen nur anhand ihres Namens und ihrer Stelligkeit identifiziert, nicht anhand der Typen ihrer Argumente (da es keine statische Typisierung gibt). Die Funktion number/1 aus dem Beispiel gilt als eine einzige Funktion, unabhängig davon, wie viele Klauseln sie hat.

Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab

Lerne Funktionen mit mehreren Klauseln

Das Üben ist gesperrt

Schalte 10 weitere Übungen frei, um Funktionen mit mehreren Klauseln zu üben