[#16113] Strange idea... exporting from a scope — "Hal E. Fulton" <hal9000@...>

Hello...

33 messages 2001/06/01

[#16364] Re: Garbage Collection? — Michael Davis <mdavis@...>

Windows 2000 and linux (RedHat 6.2). I have run these tests on both OSs.

12 messages 2001/06/09

[#16400] Symbolic Computation III — Mathieu Bouchard <matju@...>

14 messages 2001/06/11

[#16502] Playing with Ruby Syntax (was: Initial thoughts about Ruby From a Smalltalk Programmer) — jweirich@...

Michael> Hi Everyone, I have to say I'm utterly fascinated by Ruby

9 messages 2001/06/15

[#16661] Problem running irb with Ruby 1.6.4 under FreeBSD 4.0 — Bob Alexander <balexander@...>

I've installed Ruby 1.6.4 on a FreeBSD 4.0 machine, and get the

11 messages 2001/06/20

[#16686] opening db files made by apache dbmmanage — Fritz Heinrichmeyer <fritz.heinrichmeyer@...>

14 messages 2001/06/21

[#16801] rb_define_class() vs Class.new() — Kero van Gelder <kero@...4050.upc-d.chello.nl>

Hi,

18 messages 2001/06/23
[#16802] Re: rb_define_class() vs Class.new() — ts <decoux@...> 2001/06/23

>>>>> "K" == Kero van Gelder <kero@d4050.upc-d.chello.nl> writes:

[#16841] RE: national characters is strings — "Aleksei Guzev" <aleksei.guzev@...>

Next week I'll try to rebuild Ruby with Unicode strings. But it would be

15 messages 2001/06/25
[#16842] Re: national characters is strings — matz@... (Yukihiro Matsumoto) 2001/06/25

Hi,

[#16843] Re: national characters is strings — "Aleksei Guzev" <aleksei.guzev@...> 2001/06/25

That's good enough. But I'm afraid this could ( not would ) cause string

[#16868] Something strange with Ruby's inheritance mechanism — Eric Jacoboni <jaco@...>

As Ruby beginner, i try some "canonical" OO scripts. Doing so, I've

14 messages 2001/06/25
[#16873] RE: Something strange with Ruby's inheritance mechanism — "Aleksei Guzev" <aleksei.guzev@...> 2001/06/26

[#16879] Re: Something strange with Ruby's inheritance mechanism — Mathieu Bouchard <matju@...> 2001/06/26

On Tue, 26 Jun 2001, Aleksei Guzev wrote:

[#16869] Something strange with Ruby's inheritance mechanism — Eric Jacoboni <jaco@...>

As Ruby beginner, i try some "canonical" OO scripts. Doing so, I've

12 messages 2001/06/25

[#16881] — "Aleksei Guzev" <aleksei.guzev@...>

32 messages 2001/06/26
[#16916] Re: Method overloading (option) Was: Re: — "Wayne Blair" <wayne.blair@...> 2001/06/26

[#16920] Re: Method overloading (option) Was: Re: — matz@... (Yukihiro Matsumoto) 2001/06/26

Hi,

[#16888] finalizers, destructors and whatnot — "David Leal" <david@...>

Hi all,

16 messages 2001/06/26

[#17037] keeping an Exception object alive — David Alan Black <dblack@...>

Hello --

19 messages 2001/06/28
[#17055] Re: keeping an Exception object alive — matz@... (Yukihiro Matsumoto) 2001/06/29

Hi,

[#17066] RCR: Exception methods (was: Re: Re: keeping an Exception object alive) — David Alan Black <dblack@...> 2001/06/29

Hello --

[#17076] Re: RCR: Exception methods (was: Re: Re: keeping an Exception object alive) — matz@... (Yukihiro Matsumoto) 2001/06/29

Hi,

[#17079] Re: RCR: Exception methods (was: Re: Re: keeping an Exception object alive) — David Alan Black <dblack@...> 2001/06/29

Hello --

[#17138] Re: RCR: Exception methods (was: Re: Re: keeping an Exception object alive) — matz@... (Yukihiro Matsumoto) 2001/07/02

Hi,

[#17141] Re: RCR: Exception methods (was: Re: Re: keeping an Exception object alive) — David Alan Black <dblack@...> 2001/07/02

Hello --

[#17142] Re: RCR: Exception methods (was: Re: Re: keeping an Exception object alive) — ts <decoux@...> 2001/07/02

>>>>> "D" == David Alan Black <dblack@candle.superlink.net> writes:

[ruby-talk:16123] Re: Strange idea... exporting from a scope

From: "Wayne Blair" <wayne.blair@...>
Date: 2001-06-01 07:27:47 UTC
List: ruby-talk #16123
> From: "Hal E. Fulton" <hal9000@hypermetrics.com>
> 1. Intuition (for many people) says that the entities in the
> "parameter" list (which really isn't a parameter list, right?)
> are local to the block.
Yes.

> 2. Their intuition is wrong. If Ruby sees a variable in the list
> that already exists, it will use the existing one.
So it only happens on assignment within the block, the variable will be read
from the block parameters withing the block:

irb(main):007:0> x = [1, 2]
irb(main):008:0> y = 77
irb(main):009:0> x.each {|y| puts y}
1
2

but assignment will happen on the variable outside the block:

irb(main):007:0> y=0
irb(main):008:0> x.each do |y|
irb(main):009:1* puts y
irb(main):010:1> y=77
irb(main):011:1> end
1
2
irb(main):012:0> puts y
77


> 5. I still favor the symbol idea -- if a param is a symbol, then it
> refers to the outer scope; if not, it's block-local. This will still
> break old code, but I think it is more intuitive than the reverse
> (which would not break old code). And if it's a symbol, and the
> variable doesn't exist yet, then create it.
>
>   x = 5                            # and y doesn't exist
>   my_meth do | x, :y |
>     x = 6
>     y = 7
>   end
>
>   puts x              # 5  (unchanged)
>   puts y              # 7  (new var)
>

Well, if I'm well enough versed to give an opinion now, I guess I'd say that
I prefer it to work like this:

parameter variables are local to the block - assigning or reading
other variables are searched for by scope - current behavior

So the only thing I would change is not to allow a variable from the
parameter list to be treated as a higher scope variable for assignment.  The
rest of the behavior is least surprise for me.  The symbol idea is less
natural for me to visualize than explicitly declaring a temp variable before
the block is called, then populating it from within the block.

Wayne


In This Thread