Les gardes servent de complément au pattern matching. Elles permettent des vérifications plus complexes. On peut les utiliser dans certaines situations, mais pas toutes là où le pattern matching peut être utilisé, par exemple dans des clauses de fonction ou des clauses case.
def empty?(list) when is_list(list) and length(list) == 0 do
true
end
Les gardes commencent par le mot-clé when, suivi d'une expression booléenne.
Les expressions de garde sont des fonctions spéciales qui :
true ou false.Une liste de gardes courantes se trouve dans la documentation d'Elixir. Elle comprend :
Tu peux définir ta propre garde avec defguard.
D'après la convention de nommage d'Elixir, les noms de gardes doivent commencer par 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