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

Что такое блок
Что такое блок
Блок — это фрагмент кода, заключённый между do ... end или фигурными скобками { ... }.
[1, 2, 3].each do |num|
puts num * 2
endОднострочные блоки
Однострочные блоки
Для простых операций вместо do ... end можно использовать фигурные скобки {}.
[1, 2, 3].each { |num| puts num * 2 }Передача блоков методам
Передача блоков методам
Блоки можно передавать таким методам, как each, map и times.
5.times { puts 'Hello, Ruby!' }Что такое процедура
Что такое процедура
Процедура — это объект, который хранит блок кода и может быть выполнен позднее.
say_hello = Proc.new { puts 'Hello from Proc!' }
say_hello.callПередача аргументов процедуре
Передача аргументов процедуре
Процедуры могут принимать аргументы так же, как методы.
square = Proc.new { |num| num * num }
puts square.call(4)Что такое лямбда
Что такое лямбда
Лямбда похожа на процедуру, но выполняет более строгую проверку аргументов.
greet = ->(name) { puts "Hello, #{name}!" }
greet.call('Alice')Различия между процедурами и лямбдами
Различия между процедурами и лямбдами
- Процедуры игнорируют лишние аргументы, а лямбды требуют их точного соответствия.
- Лямбды возвращают управление вызывающему методу, а процедуры завершают его немедленно.
proc_example = Proc.new { return 'Proc Exited' }
lambda_example = -> { return 'Lambda Executed' }
def test
puts proc_example.call
puts lambda_example.call
end
testПоздравляем!
Поздравляем!
Вы научились использовать блоки, процедуры и лямбды в Ruby.
Далее Вы изучите ключевое слово yield и динамическую передачу блоков.

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