[#1378] differences between Module and Class ? — Mathieu Bouchard <matju@...>

25 messages 2003/08/11
[#1387] Re: differences between Module and Class ? — matz@... (Yukihiro Matsumoto) 2003/08/12

Hi,

[#1442] Re: differences between Module and Class ? — Mathieu Bouchard <matju@...> 2003/08/21

[#1406] _id2ref bug? — Ryan Pavlik <rpav@...>

While debugging some caching code, I've come across a segfault related

22 messages 2003/08/14
[#1407] Re: _id2ref bug? — matz@... (Yukihiro Matsumoto) 2003/08/14

Hi,

[#1413] Re: _id2ref bug? (REPRODUCED, short) — Ryan Pavlik <rpav@...> 2003/08/14

On Fri, 15 Aug 2003 01:57:18 +0900

Re: proc/block with return

From: Mathieu Bouchard <matju@...>
Date: 2003-08-11 20:31:43 UTC
List: ruby-core #1383
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


In This Thread