From: Fabian Streitel Date: 2009-07-14T21:52:01+09:00 Subject: Re: Twelve rules of Ruby --0015174c37b465acaf046ea9e7d1 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit I'd say one of the main suspects here is closures: returning from a block is different from returning from a lambda is different from returning from a Proc, ...: def f block block.call 'f' end f(Proc.new { return 'Proc.new' }) #=> LocalJumpError f(proc { return 'proc' }) #=> 'f' in 1.8, LocalJumpError in 1.9 f(lambda { return 'lambda' }) # => 'f' def g f(Proc.new { return 'Proc.new' }) 'g' end g() #=> 'Proc.new' etc. etc. See also this very nice summary here: http://innig.net/software/ruby/closures-in-ruby.rb If you know that, you should be able to impress a bunch of people *g* Greetz! --0015174c37b465acaf046ea9e7d1--