Перейти до основного вмісту

Основи Elixir

Elixir — це функційна мова програмування, яка працює на віртуальній машині Erlang (BEAM). Вона призначена для створення масштабованих і відмовостійких систем. Elixir успадкував багато переваг Erlang, таких як легкість паралельного програмування та висока доступність, але також додав сучасний синтаксис та інструменти для розробки.

Основні концепції Elixir

Elixir є функційною мовою, тому вона орієнтована на використання функцій та незмінних даних. Ось декілька ключових концепцій:

  • Незмінність даних. Усі дані в Elixir є незмінними, що спрощує роботу з паралельними процесами.
  • Функції. Функції є основним будівельним блоком програми. Вони можуть бути анонімними або іменованими.
  • Паттерн-матчинг. Elixir використовує паттерн-матчинг для роботи з даними, що дозволяє легко розбирати структури даних.
  • Процеси. Elixir використовує легкі процеси для паралельного виконання завдань. Ці процеси ізольовані та спілкуються через передачу повідомлень.

Синтаксис Elixir

Синтаксис Elixir є простим та елегантним. Далі кілька прикладів.

Оголошення змінних

x = 10
y = 20
sum = x + y
IO.puts("Сума: #{sum}")
Функції

Функції можуть бути іменованими або анонімними. Приклад іменованої функції:


defmodule Math do
  def add(a, b) do
    a + b
  end
end

result = Math.add(5, 3)
IO.puts("Результат додавання: #{result}")

Анонімна функція:


add = fn a, b -> a + b end
result = add.(2, 3)
IO.puts("Результат додавання: #{result}")
Паттерн-матчинг

Паттерн-матчинг (зіставляння із взірцем) дозволяє розбирати дані та зіставляти їх зі структурами:


{a, b, c} = {1, 2, 3}
IO.puts("a = #{a}, b = #{b}, c = #{c}")
Процеси

Процеси в Elixir легкі та ізольовані. Ось приклад створення процесу:


spawn(fn ->
  IO.puts("Це новий процес!")
end)

Інструменти та екосистема

Elixir має багату екосистему, яка включає:

  • Mix. Інструмент для управління проектами, компіляції коду та запуску тестів.
  • Hex. Менеджер пакетів для Elixir, який дозволяє легко встановлювати бібліотеки.
  • Phoenix. Потужний веб-фреймворк для створення швидких та масштабованих веб-додатків.

Коментарі