تُستخدم الحرّاس كمكمّل لـمطابقة الأنماط. وهي تتيح فحوصات أكثر تعقيدًا. ويمكن استخدامها في بعض الحالات التي يمكن فيها استخدام مطابقة الأنماط، وليس كلها، مثل بنود الدالة أو بنود 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