Az Elixirben egyetlen függvénynek több klóza is lehet. Ezt a függvény argumentumainak mintaillesztésével és guardok használatával érheted el.
# pattern matching the argument
def number(7) do
"Awesome, that's my favorite"
end
# using a guard
def number(n) when is_integer(n) do
"That's not my favorite"
end
def number(_n) do
"That's not even a number!"
end
FunctionClauseError hibát vált ki._-t kell írni, különben a fordító figyelmeztetést ad.fn
13 -> "Awesome, that's my favorite"
_ -> "That's not my favorite"
end
Ne feledd, hogy a több klózzal rendelkező függvényeket nem szabad összekeverni a függvénytúlterheléssel, amelyet más programozási nyelvekből ismerhetsz. Az Elixirben a függvényeket kizárólag a nevük és az aritásuk azonosítja, az argumentumaik típusa nem (mivel nincs statikus típusozás). A példában szereplő number/1 függvény egyetlen függvénynek számít, függetlenül attól, hogy hány klózzal rendelkezik.