From: gotoken@... (GOTO Kentaro) Date: 1999-10-30T05:31:40+09:00 Subject: [ruby-talk:00878] Re: local / dynamic variables Hi, In message "[ruby-talk:00877] local / dynamic variables" on 99/10/29, ts writes: > This is probably a stupid question, but why in a block a variable is not > always dynamic when this variable is defined between | | ? > > i.e. : > > a = [1]; i = 0; a.each {|i| p i } # i is a local variable in the block > # at end it erase the previous value of i > a = [1]; a.each {|i| p i } # i is a dynamic variable As you see, in the formar case, |i| is shared with the outer scope. A significant use of this feature can be given: a = [4,5,6,3] sum = 0 a.each{|i| sum += i} p sum In the book ``Object oriented scripting language Ruby'' (in Japanese), scopes of local variables are illustrated as follows: foo = 25 #<-- scope of foo # class Foo # bar = 55 # #<-- scope of bar # # def baz(local1) # # local2 = 88 # # #<-- scope of local1,local2 # # # loop do # # # local3 = 99 # # # #<-- scope of local3 ..... # # # # # # # # end # # # # # # end # # ..... # # end # ..... # See also a related thread: http://blade.nagaokaut.ac.jp/ruby/ruby-talk/thr200-403.html#root_351 p.s. Your question is not stupid but good :-) -- gotoken