গার্ড ব্যবহার করা হয় প্যাটার্ন ম্যাচিং-এর পরিপূরক হিসেবে। এগুলো আরও জটিল চেক করার সুযোগ দেয়। প্যাটার্ন ম্যাচিং যেসব ক্ষেত্রে ব্যবহার করা যায়, তার কিছু ক্ষেত্রে, তবে সব ক্ষেত্রে নয়, গার্ড ব্যবহার করা যায়, যেমন ফাংশন ক্লজ বা কেস ক্লজে।
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