A guardok a mintaillesztés kiegészítéseként szolgálnak. Segítségükkel összetettebb ellenőrzéseket is végezhetsz. Némelyik, de nem mindegyik olyan helyzetben használhatók, ahol a mintaillesztés is, például függvényklózokban vagy case-ágakban.
def empty?(list) when is_list(list) and length(list) == 0 do
true
end
A guardok a when kulcsszóval kezdődnek, amelyet egy Boolean-kifejezés követ.
A guardkifejezések speciális függvények, amelyek:
true vagy false értéket kell visszaadniuk.A gyakori guardok listája az Elixir dokumentációjában található. Ezek közé tartoznak:
Saját guardot is definiálhatsz a defguard segítségével.
Az Elixir elnevezési konvenciója szerint a guardnevek is_-sel kezdődjenek.
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