Клас Proc
в мові програмування Ruby представляє об’єкт, який містить фрагмент коду, який може бути викликаний. Він є одним з типів об’єктів, які представляють блоки коду в Ruby. Об’єкти класу Proc
можуть бути створені для зберігання анонімних функцій або блоків коду, і вони можуть бути передані як аргументи до методів чи збережені для подальшого використання.
Основні способи створення об’єктів класу Proc
включають в себе використання конструкторів Proc.new
або proc
(обидва з них є синонімами), а також використання лямбда-синтаксису, такого як ->
.
Процедури (Proc
) можна викликати за допомогою методу call
або, з використанням коротшого синтаксису, за допомогою оператора виклику ( )
.
# Створення об'єкта класу Proc з використанням конструктора Proc.new
my_proc = Proc.new { puts "Це приклад Proc" }
# Або коротший синтаксис з використанням методу proc
my_proc = proc { puts "Це ще один приклад Proc" }
# Виклик процедури
my_proc.call
# Або коротший варіант
my_proc.()
Отже, клас 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. Він є потужним інструментом для роботи з блоками коду, передачі функцій як аргументів та створення замикань.