case হলো একটি কন্ট্রোল ফ্লো স্ট্রাকচার, যা আমাদেরকে একটি প্রদত্ত মানকে অনেক প্যাটার্নের সাথে তুলনা করার সুযোগ দেয়। case এক্সপ্রেশনের ক্লজগুলো উপরে থেকে নিচে মূল্যায়ন করা হয়, যতক্ষণ না একটি ম্যাচ পাওয়া যায়।
অনেক ক্ষেত্রে case ব্যবহার করা এবং একাধিক ফাংশন ক্লজ ডিফাইন করা একে অপরের বদলে ব্যবহার করা যায়। case ক্লজগুলোতে প্যাটার্ন ম্যাচিং এবং গার্ড ব্যবহার করা যায়।
# one function clause, multiple case clauses
def age_group(age) do
case age do
0 -> ~c"infant"
age when age < 4 -> ~c"baby"
age when age < 13 -> ~c"child"
age when age < 18 -> ~c"teenager"
_ -> ~c"adult"
end
end
# multiple function clauses, no case
def age_group(0), do: ~c"infant"
def age_group(age) when age < 4, do: ~c"baby"
def age_group(age) when age < 13, do: ~c"child"
def age_group(age) when age < 18, do: ~c"teenager"
def age_group(_), do: ~c"adult"
একটির বদলে অন্যটি বেছে নেওয়ার জন্য কোনো কঠোর নিয়ম নেই। এটি ব্যক্তিগত পছন্দের বিষয়, যা সাধারণত প্রসঙ্গের উপর নির্ভর করে।