Про клас Proc в Ruby

Клас Proc в мові програмування Ruby використовується для створення анонімних функцій (також відомих як lambda-функції або блоки). Процедури (Proc) дозволяють вам зберігати фрагменти коду і передавати їх як аргументи до методів, використовувати їх для збереження стану та викликати потім.

Основні риси класу Proc*

Створення об’єкта Proc:
my_proc = Proc.new { puts "Це приклад Proc" }

Або коротший синтаксис:

my_proc = proc { puts "Це ще один приклад Proc" }

Виклик процедури:
my_proc.call

Або коротший варіант:

my_proc.()

Передача процедури як блоку методу:

def use_proc(&block)
  block.call
end

use_proc(&my_proc)

Параметри в процедурі:

sum = Proc.new { |x, y| puts x + y }
sum.call(2, 3)  

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

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

Захоплення змінних (Closure):
Процедури можуть захоплювати зовнішні змінні, що дозволяє їм зберігати стан між викликами.

def counter
  count = 0
  Proc.new { puts count += 1 }
end

my_counter = counter
my_counter.call  # Виведе 1
my_counter.call  # Виведе 2

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