Блоки в Ruby - це фрагменти коду, які можна передавати методам для виконання певних дій. Вони дозволяють створювати гнучкі та динамічні конструкції програми, такі як замикання (closures) і ітератори. Основні аспекти, пов’язані з блоками в Ruby, включають:
Синтаксис блоків. Блоки можна визначити за допомогою ключових слів do ... end
або фігурних дужок { ... }
.
3.times do
puts "Hello"
end
3.times { puts "Hello" }
Передача блоків в методи. Багато методів в Ruby можуть приймати блоки коду як параметри. Їх викликають в середині методу за допомогою ключового слова yield
.
def my_method
puts "Start of method"
yield if block_given?
puts "End of method"
end
my_method do
puts "Inside the block"
end
Параметри блоків. Блоки можуть приймати параметри, які потім можуть використовуватися в їхньому внутрішньому коді. Параметри передаються в блок через вертикальну риску |
.
5.times do |i|
puts "Iteration #{i}"
end
Замикання (Closures). Блоки в Ruby є замиканнями, що означає, що вони можуть зберігати і звертатися до змінних, що оточують їх, навіть після того, як метод, який їх створив, завершив виконання.
def create_closure
x = 10
return proc { puts x }
end
closure = create_closure
closure.call # Виведе 10
Ітератори: Багато вбудованих методів масивів та інших колекцій приймають блоки для виконання певних дій для кожного елементу.
[1, 2, 3].each do |num|
puts num
end
Proc і Lambda. Proc і Lambda - це об’єкти, які представляють блок коду. Вони взаємозамінні, але є деякі відмінності в тому, як вони обробляють передані їм аргументи і вихід з блоку.
# Proc
my_proc = proc { puts "Hello" }
my_proc.call
# Lambda
my_lambda = -> { puts "Hello" }
my_lambda.call
Це загальний огляд блоків в Ruby. Вони є потужним інструментом для створення зручних та читабельних конструкцій коду.