Клас 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. Він є потужним інструментом для роботи з блоками коду, передачі функцій як аргументів та створення замикань.