Що таке lambda - функція?

В Ruby, лямбда-функції представлені анонімними блоками коду, які можна визначити та зберігати в змінних. Це дозволяє їх використовувати як об’єкти, передавати як аргументи в методи, а також використовувати їх в інших конструкціях мови.

Лямбда в Ruby можна визначити за допомогою ключового слова lambda

my_lambda = lambda { |x| x * 2 }

Лямбда в Ruby можна визначити за допомогою ключового слова lambda або оператора ->

# Використання ключового слова `lambda`
my_lambda = lambda { |x| x * 2 }

# Використання оператора `->`
my_lambda = ->(x) { x * 2 }

Лямбда-функції можуть приймати аргументи, які передаються в тілі функції.

my_lambda = ->(x, y) { x + y }
result = my_lambda.call(3, 4)
puts result 

Значення останнього виразу в тілі лямбди вважається значенням, що повертається.

my_lambda = ->(x) { x * 2; puts "Цей рядок не виконається"; }
result = my_lambda.call(5)
puts result  # Виведе 10

Лямбда-функції можуть використовуватися як аргументи для методів, таких як each або map .

numbers = [1, 2, 3, 4]
square = ->(x) { x**2 }

squared_numbers = numbers.map(&square)

Змінні, визначені поза лямбда-функцією, доступні в тілі лямбди.

outside_variable = 10
my_lambda = -> { puts outside_variable }
my_lambda.call 

Використання лямбда-функцій може бути дуже зручним, наприклад, при обробці списків, фільтрації даних, мапування, передача їх як параметри до інших методів або в інших ситуаціях, де потрібно передати коротку анонімну функцію.

Лямбда-функції широко використовуються в функціональному програмуванні, а також в інших стилях програмування для коротких, одноразових виразів, де визначення повноцінної функції здається зайвим.

Лямбда - це об’єкт класу Proc, але є деякі відмінності від звичайного Proc. Лямбда обмежує кількість переданих аргументів і повертається звідти, де вона була викликана.

Деякі, постійно оновлювані, приклади