Στην 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 από το παράδειγμα θεωρείται μία μόνο συνάρτηση, ανεξάρτητα από το πόσες ρήτρες έχει.