Разница между lambda и def method_name в Ruby

Я читаю кирку 1.9, и автор использует лямбду следующим образом:

bo = lambda {|param| puts "You called me with #{param}"}
bo.call 99     => 'You called me with 99'
bo.call "cat"  => 'You called me with cat'

Мой вопрос таков: чем это лучше/хуже/отличается от просто определение метода, который делает то же самое? Примерно так:

def bo(param)
  puts "You called me with #{param}"
end

bo("hello") => 'You called me with hello'

Мне синтаксис лямбда кажется гораздо более запутанным и похожим на спагетти.

8
задан Josh 23 April 2012 в 16:28
поделиться