What is the reference for the "pickaxe book" ?
Author, Title, Publisher and ISBN Number.

Thank you.

ERA

---------- Original Message ----------------------------------
From: Amos <amos+lists.ruby-talk / utdallas.edu>
Reply-To: ruby-talk / ruby-lang.org
Date: Sun, 18 Mar 2001 06:16:43 +0900

>This morning while I was still lying in bed, I was trying to see if
>my dense mind could recall the various issues regarding this local
>scope stuff, a thread I've only been partially able to follow due to
>limited time.  This is how things currently work, right?
>
>b = false
>i = 0
>5.times {|i|
>  print i, " "
>}
>print "\n", i, "\n"
>print b, "\n"
>
>-> 0 1 2 3 4
>-> 4
>-> false
>
>Going over things out load, the symbols between the bars (|) are not
>local to that block, which can frustrate folks because of the side
>effects that can have.
>
>Must admit, that aspect of blocks wasn't immediately apparent to me
>when I was first going through the pickaxe book.  In my simplistic
>mind, I just saw the items between the bars as being the same thing
>as function arguments.  Silly me!
>
>Okay, so what if the symbols between the bars were pretty much the
>same as function arguments?  That is, like with functions arguments,
>the symbols between the bars were, at least by default, local to
>that scope.  Then perhaps the following might be possible?
>
>b = false 
>i = 0 
>5.times {|i| 
>  print i, " " 
>} 
>print "\n", i, "\n" 
>print b, "\n" 
> 
>-> 0 1 2 3 4 
>-> 0
>-> false 
> 
>b = false  
>i = 0  
>5.times {|::i|  
>  print i, " "  
>}  
>print "\n", i, "\n"  
>print b, "\n"  
>  
>-> 0 1 2 3 4  
>-> 4
>-> false  
>
>b = false   
>i = 0   
>5.times {|::i, b=true|   
>  print i, " " if b
>}   
>print "\n", i, "\n"   
>print b, "\n"   
>   
>-> 0 1 2 3 4   
>-> 4 
>-> false   
>
>In the second chunk of code the scope operator (::) is used to
>designate that the following symbol is to be bound to the calling
>scope, if that makes any sense.
>
>In the third block, the second argument between the bars is
>assigned a default value.  The idea behind that is so that the
>invocation of yield won't blow up because of the wrong number of
>arguments, yet it allows one to define a symbol to have local
>scope. 
>
>Well, such as it is, that's what my mind spit out this morning.
>
>-- 
>Amos
>
>