«گاردها» بهعنوان مکملی برای «تطبیق الگو» به کار میروند. اینها امکان بررسیهای پیچیدهتری را فراهم میکنند. میتوان از آنها در برخی موقعیتها، اما نه همه، که تطبیق الگو در آنها به کار میرود، استفاده کرد؛ برای مثال در بندهای تابع یا بندهای case.
def empty?(list) when is_list(list) and length(list) == 0 do
true
end
گاردها با کلیدواژهی when شروع میشوند و پس از آن یک عبارت «منطقی» میآید.
عبارتهای گارد، توابع خاصی هستند که:
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