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

Публікації

Показано дописи з грудень, 2025

Рекурсія в Elixir

Рекурсія — це коли функція викликає саму себе. В Elixir, де немає циклів, рекурсія є основним способом обробки колекцій та повторюваних операцій. Проста рекурсія Базова рекурсивна функція складається з двох частин: базового випадку та рекурсивного виклику: # Факторіал defmodule Math do def factorial(0), do: 1 def factorial(n) when n > 0 do n * factorial(n - 1) end end Math.factorial(5) # 120 (5 * 4 * 3 * 2 * 1) # Сума списку defmodule ListHelper do def sum([]), do: 0 def sum([head | tail]) do head + sum(tail) end end ListHelper.sum([1, 2, 3, 4, 5]) # 15 Примітка: Базовий випадок (наприклад, порожній список або 0) запобігає нескінченній рекурсії. Проблема простої рекурсії Проста рекурсія створює стек викликів, що може призвести до переповнення пам'яті: # Неефективна рекурсія def factorial(5) 5 * factorial(4) 4 * factorial(3) 3 * factorial(2) 2 * facto...

Модулі в Elixir

Модулі — це основний спосіб організації коду в Elixir. Вони групують пов'язані функції разом і створюють простори імен, що дозволяє уникнути конфліктів імен та структурувати програму. Базове визначення модуля Модулі визначаються за допомогою ключового слова defmodule : # Простий модуль defmodule Greeting do def hello do "Привіт, світ!" end def hello(name) do "Привіт, #{name}!" end end # Виклик функцій модуля Greeting.hello() # "Привіт, світ!" Greeting.hello("Олексій") # "Привіт, Олексій!" Публічні та приватні функції Функції можуть бути публічними ( def ) або приватними ( defp ): defmodule Calculator do # Публічна функція - доступна ззовні def calculate(a, b, operation) do case operation do :add -> add(a, b) :subtract -> subtract(a, b) :multiply -> multiply(a, b) :divide -> divide(a, b) end ...

Анонімні функції в Elixir

Анонімні функції (lambda-функції) — це функції без імені, які можуть бути присвоєні змінним, передані як аргументи або повернуті з інших функцій. Вони є основою функціонального програмування в Elixir. Базовий синтаксис Анонімні функції створюються за допомогою ключових слів fn та end : # Проста анонімна функція add = fn a, b -> a + b end # Виклик анонімної функції (з крапкою!) result = add.(5, 3) # result = 8 # Функція без параметрів greet = fn -> "Привіт!" end greet.() # "Привіт!" # Багаторядкова функція calculate = fn x, y -> sum = x + y product = x * y {sum, product} end calculate.(4, 5) # {9, 20} Важливо: Для виклику анонімних функцій використовується крапка . перед дужками: func.(args) . Це відрізняє їх від іменованих функцій. Скорочений синтаксис (&) Elixir пропонує скорочений синтаксис для простих анонімних функцій за допомогою оператора & : ...