Forum: Ruby scope issue of variable in iterator

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Mohammad K. (Guest)
on 2006-03-22 18:41
(Received via mailing list)
mkhan@mkhan:~$ irb
irb(main):001:0> batman = 'robin'
=> "robin"
irb(main):002:0> [ 'cat', 'dog', 'horse', 'chicken' ].each { |batman|
puts batman }
cat
dog
horse
chicken
=> ["cat", "dog", "horse", "chicken"]
irb(main):003:0> puts "Now you might think this would say 'robin', but
it says: #{batman}"
Now you might think this would say 'robin', but it says: chicken
=> nil
irb(main):004:0>



--
Mohammad K. | Software Engineer
Lextranet | 107 Union Wharf | Boston, MA 02109
http://www.lextranet.com
(617) 227-4469 Extension 218

Smart Tools. Smart Team. Smart Choice.




THE INFORMATION IN THIS MESSAGE IS INTENDED ONLY FOR THE PERSONAL AND
CONFIDENTIAL USE  OF  THE  DESIGNATED RECIPIENTS  NAMED ABOVE AND MAY
CONTAIN LEGALLY PRIVILEGED INFORMATION. If the reader of this message
is not the intended  recipient or an agent responsible for delivering
it to the  intended recipient, you are hereby notified  that you have
received this  document in error, and that any review, dissemination,
distribution or  copying of this  message is  strictly prohibited. If
you have  received  this  communication  in  error,  please notify us
immediately by telephone at 617-227-4469 Ext. 200.         Thank you.
Mark V. (Guest)
on 2006-03-22 18:48
(Received via mailing list)
On 3/22/06, Mohammad K. <removed_email_address@domain.invalid> wrote:
> irb(main):003:0> puts "Now you might think this would say 'robin', but
> it says: #{batman}"
> Now you might think this would say 'robin', but it says: chicken
> => nil

It's true that blocks introduce a new scope.
However, if they use variables that are in scope outside the block,
they don't shadow those variables, they use them.
Robert K. (Guest)
on 2006-03-22 20:04
(Received via mailing list)
Mark V. <removed_email_address@domain.invalid> wrote:
>> => ["cat", "dog", "horse", "chicken"]
>> irb(main):003:0> puts "Now you might think this would say 'robin',
>> but it says: #{batman}"
>> Now you might think this would say 'robin', but it says: chicken
>> => nil
>
> It's true that blocks introduce a new scope.
> However, if they use variables that are in scope outside the block,
> they don't shadow those variables, they use them.

.... like in other programming languages as well.

    robert
This topic is locked and can not be replied to.