Yield и передача блоков
Изучите ключевое слово yield и динамическую передачу блоков методам
«Yield и передача блоков» — бесплатный урок Ruby Academy на CoddyKit. Это урок 3 из 3. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Ruby Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Ruby Academy содержит 3 уроков всего.
Yield и передача блоков
Yield и передача блоков
Ruby позволяет передавать блоки методам с помощью ключевого слова yield.
В этом уроке Вы научитесь использовать yield для выполнения блока внутри метода.

Использование yield
Использование yield
Ключевое слово yield запускает блок, переданный методу.
def greet
puts 'Before yield'
yield
puts 'After yield'
end
greet { puts 'Hello from the block!' }Передача параметров с помощью yield
Передача параметров с помощью yield
Ключевое слово yield может передавать параметры блоку.
def square(num)
yield num * num
end
square(4) { |result| puts "Square: #{result}" }Проверка наличия блока
Проверка наличия блока
Вы можете проверить, получил ли метод блок, с помощью block_given?.
def greet
if block_given?
yield
else
puts 'No block given'
end
end
greet
greet { puts 'Hello from block!' }Передача блоков с помощью &block
Передача блоков с помощью &block
Блоки можно явно передавать в качестве параметра с помощью &block.
def execute_block(&block)
block.call if block
end
execute_block { puts 'Block executed!' }Многократное использование yield
Многократное использование yield
Метод может вызывать yield несколько раз.
def repeat(times)
times.times { yield }
end
repeat(3) { puts 'Hello!' }Передача блоков в виде процедур
Передача блоков в виде процедур
Блоки можно преобразовывать в процедуры и передавать в качестве аргументов.
def execute_proc(proc)
proc.call
end
my_proc = Proc.new { puts 'Proc executed!' }
execute_proc(my_proc)Использование лямбды в качестве блока
Использование лямбды в качестве блока
Лямбду можно использовать вместо блока.
def execute_lambda(lmbd)
lmbd.call
end
my_lambda = -> { puts 'Lambda executed!' }
execute_lambda(my_lambda)Поздравляем!
Поздравляем!
Вы научились использовать yield и передавать блоки в Ruby.
Далее Вы узнаете о работе с коллекциями.

Часто задаваемые вопросы
Урок «Yield и передача блоков» бесплатный?
Да — полный текст урока «Yield и передача блоков» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Ruby Academy, подпишись на CoddyKit PRO. Курс Ruby Academy содержит 3 уроков всего.
Чему я научусь в уроке «Yield и передача блоков»?
Изучите ключевое слово yield и динамическую передачу блоков методам Ты практикуешь Ruby Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Ruby Academy?
Предыдущий опыт не требуется. Ruby Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 3.
Сколько времени занимает урок «Yield и передача блоков»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Ruby Academy?
Да. Каждый урок Ruby Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Определение методов
- Блоки, Procs и Lambdas
- Yield и передача блоков