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"
इनमें से किसी एक को चुनने के लिए कोई सख्त नियम नहीं हैं। यह आपकी अपनी पसंद की बात है, जो आम तौर पर संदर्भ पर निर्भर करती है।