Proc.newとlambda
Proc.newのブロックの中でreturnを書くと、そのreturnは実行されるけど
lambdaのブロックの中でreturnを書いても、そのreturnは実行されない
irb(main):001:0> def foo irb(main):002:1> f = Proc.new{return "return from foo from inside proc"} irb(main):003:1> f.call irb(main):004:1> return "return from foo" irb(main):005:1> end => nil irb(main):006:0> def bar irb(main):007:1> f = lambda{ return "return from lambda"} irb(main):008:1> f.call irb(main):009:1> return "return from bar" irb(main):010:1> end => nil irb(main):011:0> puts foo return from foo from inside proc => nil irb(main):012:0> puts bar return from bar => nil