From: Mathieu Bouchard Date: 2003-08-12T05:31:43+09:00 Subject: Re: proc/block with return On Tue, 12 Aug 2003, Mathieu Bouchard wrote: > it seems that the semantics of return inside of a proc/block have changed > in subtle ways, but I can't really figure out what's going on. > [...] > But I will please need some help to figure out the consequences of the > above log entry. I would like examples of how ruby 1.8 is different from > 1.6, and what are similarly constructed cases that are _not_ different > from 1.6, so that I can have a precise idea of the change. Actually I've found one difference which is especially troublesome: irb(main):001:0> def f(&b) b.call; end; def g; f{return 42}+1; end; g => 43 irb(main):002:0> def f; yield; end; def g; f{return 42}+1; end; g => 42 Normally I'd call this a bug, but it seems to be intentional, in the light of the aforementioned changelog entry, so, what is going on? why introduce incompatibilities like that? and most of all, especially as "break" has been given more return-like semantics, but at the block/proc level, why is "return" sometimes behaving as if it were a break, but only _sometimes_, and not _never_ (or even _always_) ? ________________________________________________________________ Mathieu Bouchard http://artengine.ca/matju