Tracks
/
Elixir
Elixir
/
Lehrplan
/
Musterabgleich
Mu

Musterabgleich in Elixir

73 Übungen

Über Musterabgleich

Wenn wir Funktionen in Elixir schreiben, können wir einen assertiven Stil mit Pattern Matching verwenden:

def read_file() do
  {:ok, contents} = File.read("hello.txt")
  contents
end
  • Pattern Matching wird explizit mit dem Match-Operator =/2 durchgeführt.

    • Ein Match ist erfolgreich, wenn die Form der Daten auf der linken Seite des Operators zur rechten Seite passt.

    • Wenn ein Match erfolgreich ist, werden die Variablen auf der linken Seite an die Werte auf der rechten Seite gebunden.

    • Mit einem Unterstrich, _, können wir die Werte an diesen Stellen ignorieren.

      {:ok, number, _} = {:ok, 5, [4.5, 6.3]}
      number
      # => 5 is bound to this variable
      
    • Der Pin-Operator ^ kann verwendet werden, um zu verhindern, dass eine Variable neu gebunden wird, und stattdessen gegen ihren vorhandenen Wert zu matchen.

      number = 10
      {:ok, ^number, _} = {:ok, 5, [4.5, 6.3]}
      # => ** (MatchError) no match of right hand side value: {:ok, 5, [4.5, 6.3]}
      
  • Pattern Matching kann auch im Kopf einer Funktionsklausel vorkommen, sodass nur Argumente, die zum Muster passen, die Funktion aufrufen.

  • Variablen können in einem Pattern Match in einer Funktionsklausel gebunden werden.

    defmodule Example do
      def named_function(:a = atom_variable) do
        {atom_variable, 1}
      end
    end
    
    Example.named_function(:a)
    # => {:a, 1}
    # The first function clause matches, so it is invoked
    
    Example.named_function(:b)
    # => ** (FunctionClauseError) no function clause matching in Example.named_function/1
    
Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab

Lerne Musterabgleich

Das Üben ist gesperrt

Schalte 10 weitere Übungen frei, um Musterabgleich zu üben