Elixir में एक ही फंक्शन के कई क्लॉज़ हो सकते हैं। यह फंक्शन के आर्गुमेंट पर पैटर्न मैचिंग और गार्ड के उपयोग से किया जाता है।
# 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 उत्पन्न करता है।_ लगाना चाहिए, वरना कंपाइलर एक चेतावनी देता है।fn
13 -> "Awesome, that's my favorite"
_ -> "That's not my favorite"
end
ध्यान दीजिए कि कई क्लॉज़ वाले फंक्शन को फंक्शन ओवरलोडिंग से भ्रमित नहीं करना चाहिए, जिसे आप दूसरी प्रोग्रामिंग भाषाओं से जानते होंगे। Elixir में फंक्शन की पहचान सिर्फ उसके नाम और आर्टी से होती है, आर्गुमेंट के टाइप से नहीं (क्योंकि यहाँ स्टैटिक टाइपिंग नहीं होती)। उदाहरण का फंक्शन number/1 एक ही फंक्शन माना जाता है, चाहे उसमें कितने भी क्लॉज़ हों।