Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Ruby: proc, lambda, return, arguments, strictness

В чем разница между proc и lambda?

Вопрос помогает выяснить понимание различий между двумя основными типами объектов, представляющих блоки кода.

Короткий ответ

Основные различия между proc и lambda в Ruby:

  • lambda строго проверяет количество аргументов, а proc — нет.

  • При использовании return в lambda, она возвращается только из самой себя, тогда как proc завершает выполнение всего метода.

Длинный ответ

Хотя proc и lambda создают объекты, представляющие блоки кода, они ведут себя по-разному:

Проверка аргументов:

my_proc = Proc.new { |x| puts x }
my_proc.call # => nil (не вызывает ошибку)

my_lambda = ->(x) { puts x }
my_lambda.call # Ошибка: wrong number of arguments

Поведение return:

def test_proc
  	my_proc = Proc.new { return "Proc exited method" }
  	my_proc.call
  	"Proc didn't exit method"
end
puts test_proc # => Proc exited method

def test_lambda
  	my_lambda = -> { return "Lambda exited itself" }
  	puts my_lambda.call
  	"Lambda didn't exit method"
end
puts test_lambda # => Lambda exited itself \n Lambda didn't exit method

Синтаксис создания:

my_proc = Proc.new { puts "Hello from Proc" }
my_lambda = -> { puts "Hello from Lambda" }

Выбор между proc и lambda зависит от требований к обработке аргументов и необходимости контроля выполнения.

Уровень

  • Рейтинг:

    3

  • Сложность:

    6

Навыки

  • Ruby

    Ruby

Ключевые слова

#proc

#lambda

#return

#arguments

#strictness

Подпишись на Ruby Developer в телеграм