Гарди використовують як доповнення до зіставлення зі зразком. Вони дають змогу робити складніші перевірки. Їх можна використовувати в деяких, але не в усіх ситуаціях, де застосовне зіставлення зі зразком, наприклад у визначеннях функцій або в гілках case.
def empty?(list) when is_list(list) and length(list) == 0 do
true
end
Гарди починаються з ключового слова when, після якого йде булевий вираз (англ. Boolean).
Вирази гардів є спеціальними функціями, які:
true або false.Перелік поширених гардів можна знайти в документації Elixir. До нього входять:
Власний гард можна визначити за допомогою defguard.
Згідно з правилами найменування в Elixir, назви гардів мають починатися з 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