В 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 з прикладу вважається однією функцією, скільки б пунктів вона не мала.