As guardas são usadas como complemento da correspondência de padrões. Permitem fazer verificações mais complexas. Podem ser usadas em algumas situações, mas não todas onde a correspondência de padrões também pode ser usada, por exemplo em cláusulas de funções ou em cláusulas case.
def empty?(list) when is_list(list) and length(list) == 0 do
true
end
As guardas começam com a palavra-chave when, seguida de uma expressão Boolean.
As expressões de guarda são funções especiais que:
true ou false estritos.Encontras uma lista de guardas comuns na documentação do Elixir. Incluem:
Podes definir as tuas próprias guardas com defguard.
De acordo com a convenção de nomenclatura do Elixir, os nomes das guardas devem começar por 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