Треки
/
Elixir
Elixir
/
Салабус
/
Функції з кількома клаузами
Фу

Функції з кількома клаузами у Elixir

72 вправи

Про концепцію Функції з кількома клаузами

В 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
  • Використовуймо кілька пунктів функції, щоб винести логіку керування з функцій.
  • Пункти перевіряються по порядку, згори донизу вихідного файлу, доки якийсь із них не спрацює.
  • Якщо не спрацює жоден, BEAM VM викликає помилку FunctionClauseError.
  • Якщо змінні-аргументи не використовуються ні в тілі функції, ні в сторожовому виразі, перед їхніми назвами варто ставити _, інакше компілятор видасть попередження.
  • Анонімні функції теж можуть мати кілька пунктів.
    fn
      13 -> "Awesome, that's my favorite"
      _ -> "That's not my favorite"
    end
    

Зауважмо, що функції з кількома пунктами не слід плутати з перевантаженням функцій, яке можна знати з інших мов програмування. В Elixir функції розрізняються лише за назвою та арністю, а не за типами аргументів (адже статичної типізації тут немає). Функція number/1 з прикладу вважається однією функцією, скільки б пунктів вона не мала.

Редагувати через GitHub Посилання відкривається в новому вікні або вкладці

Вивчити концепцію Функції з кількома клаузами

Практика заблокована

Розблокуйте ще 10 вправ, щоб практикувати концепцію Функції з кількома клаузами