Brad wrote:

> What I was trying to say was...
> 
> I was wondering if there were some way to allow manipulations of
> function/methods parameters such that the calling processes variable
> values would be modified.  
> 
> As I understand it now this is not possible, though being new to Ruby I 
> thought it couldn't hurt to ask.

No, it doesn't hurt to ask.

There is a way of modifying the variable bindings in the calling method, 
but it is not widely used.  You need to create a "reference" to the 
variable and pass that into the swap function.  I use a "helper" 
function "ref" to create the reference ...

Here's an example ...

   require 'reference'

   def swap(a,b)
     a.value, b.value = b.value, a.value
   end

   x = 10
   y = 11

   puts "BEFORE: x = #{x}, y = #{y}"
   swap(ref{:x}, ref{:y})
   puts "AFTER:  x = #{x}, y = #{y}"

Note that those are curly braces, not parenthesis after "ref".  This 
will print ...

   BEFORE: x = 10, y = 11
   AFTER:  x = 11, y = 10

Here's the reference.rb file that you will need ...

   class Reference
     def initialize(&block)
       sym = block.call
       fail "Block must yield symbol" unless Symbol === sym
       @getter = eval "proc { #{sym} }", block
       @setter = eval "proc { |v| #{sym} = v }", block
     end
     def value
       @getter.call
     end
     def value=(v)
       @setter.call(v)
     end
   end

   def ref(&block)
     Reference.new(&block)
   end

-- 
-- Jim Weirich       jweirich / one.net      http://onestepback.org
-----------------------------------------------------------------
"Beware of bugs in the above code; I have only proved it correct,
not tried it." -- Donald Knuth (in a memo to Peter van Emde Boas)