A case egy vezérlési szerkezet, amellyel egy adott értéket több mintával is össze tudunk hasonlítani. A case kifejezés klózait az értelmező fentről lefelé haladva értékeli ki, amíg egyezést nem talál.
Sok esetben a case használata felcserélhető a több függvényklóz definiálásával. A case klózaiban mintaillesztést és őröket is használhatsz.
# 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"
Nincs szigorú szabály arra, hogy melyiket válaszd a másik helyett. Ez ízlés kérdése, ami általában a helyzettől függ.