In Elixir ist = kein Zuweisen, sondern ein Abgleich (Match): Die linke Seite wird so an die rechte angepasst, dass beide gleich sind. So zerlegst du Daten: {:ok, wert} = {:ok, 42} bindet wert an 42. Passt das Muster nicht, gibt es einen MatchError. Mit _ ignorierst du Teile, mit ^ pinnst du einen vorhandenen Wert.
Pattern Matching steckt auch in Funktionsköpfen und in case.
{:ok, wert} = {:ok, 42}
IO.puts(wert) # 42
[kopf | rest] = [1, 2, 3]
IO.inspect(kopf) # 1
IO.inspect(rest) # [2, 3]
%{name: n} = %{name: "Mia", alter: 17}
IO.puts(n)
case {:error, "kaputt"} do
{:ok, w} -> IO.puts("Wert #{w}")
{:error, msg} -> IO.puts("Fehler: #{msg}")
endMerke
=ist ein Abgleich, kein bloßes Zuweisen[kopf | rest]zerlegt Listencasewählt per Muster
Aufgabe
Zerlege mit Pattern Matching ein Tupel `{:ok, "Mia", 17}`.