Le guardie si usano come complemento al pattern matching. Permettono di eseguire controlli più complessi. Si possono usare in alcune, ma non tutte le situazioni in cui si può usare il pattern matching, per esempio nelle clausole di funzione o nelle clausole case.
def empty?(list) when is_list(list) and length(list) == 0 do
true
end
Le guardie iniziano con la parola chiave when, seguita da un'espressione booleana.
Le espressioni di guardia sono funzioni speciali che:
true o false.Un elenco delle guardie più comuni si trova nella documentazione di Elixir. Ne fanno parte:
Puoi definire una guardia personalizzata con defguard.
Secondo la convenzione di denominazione di Elixir, i nomi delle guardie dovrebbero iniziare con is_.
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