Guards werden als Ergänzung zum Pattern Matching verwendet. Sie ermöglichen komplexere Prüfungen. Sie können in einigen, aber nicht allen Situationen verwendet werden, in denen Pattern Matching verwendet werden kann, zum Beispiel in Funktionsklauseln oder Case-Klauseln.
def empty?(list) when is_list(list) and length(list) == 0 do
true
end
Guards beginnen mit dem when-Schlüsselwort, gefolgt von einem booleschen Ausdruck.
Guard-Ausdrücke sind spezielle Funktionen, für die gilt:
true- oder false-Werte zurückgeben.Eine Liste häufiger Guards findest du in der Elixir-Dokumentation. Dazu gehören:
Du kannst deinen eigenen Guard mit defguard definieren.
Laut Elixirs Namenskonvention sollten Guard-Namen mit is_ beginnen.
defmodule HTTP do
defguard is_success(code) when code >= 200 and code < 300
def handle_response(code) when is_success(code) do
:ok
end
end