Что такое лямбда?
Попробуйте это с вашим irb .
lam = lambda { puts "Hello world"}
lam.class
#output is
=> Proc
Лямбда в ruby также является экземпляром класса Proc. лямбды - это другой вкус проков.
Что такое Proc?
Объекты Proc - это блоки кода, которые были связаны с набором локальных переменных.
proc = Proc.new { puts "Hello World" }
proc.call
#output is
=> Hello World
В чем разница между процом и лямбдой? Сравнение объяснит случаи использования
Лямбды проверяют количество аргументов, а процы - нет.
multiply = lambda { |x,y| x*y }
multiply.call(2,3) #=>6
multiply.call(2) #ArgumentError: wrong number of arguments (1 for 2)
multiply = Proc.new {|x| x*x}
multiply.call(2) # =>4
multiply.call(2,3) # =>4 (It ignore the second argument)
Lambdas и procs по-разному обрабатывают ключевое слово return
(Прочитайте статью ниже, например)
Прочитайте эту замечательную статью для более подробной информации
http://awaxman11.github.io/blog/2013/08/05/what-is-the-difference-between-a-block/