Hi --

On Sat, 27 Jan 2007, Robert Dober wrote:

> On 1/27/07, dblack / wobblini.net <dblack / wobblini.net> wrote:
>> 
>> Hi --
>> 
>> On Sat, 27 Jan 2007, Martin C. Martin wrote:
>> 
>> >
>> >
>> > Phrogz wrote:
>> >> If you pass an immutable type by reference, does it make a sound?
>> >> Er, I mean...
>> >> If you passed an immutable type by reference, how would you know that
>> >> it wasn't passed by value?
>> >
>> > Is there any way for the function you're calling to modify the value of
>> the
>> > variable in the caller?  Pass by reference can do that.
>> 
>> You can modify the object to which the variable refers:
>>
>>    def change_me(obj)
>>      obj << "hi"
>>    end
>>
>>    arr = [1,2,3]
>>    change_me(arr)
>>    p arr          # [1, 2, 3, "hi"]
>> 
>> In this example, arr contains a reference to an array.  In change_me,
>> obj contains another copy of the same reference, so you can use it to
>> manipulate and change the original array.
>> 
>> I still wouldn't call this pass by reference (see my earlier post in
>> this thread).
>
>
> Just to demonstrate your point
>
> def modifying a_param
>   a_param = "hi"
> end
>
> a_value = "low"
>
> modifying a_value
> case a_value
> when "hi"
>   puts "Passed by reference"
> when "low"
>  puts "Passed by value"
> else
>  puts "Passed away"
> end

That's a somewhat different point, though, having to do with variable
scope and (re)assignment semantics.  What you're doing here
essentially is:

   a = "low"
   b = a
   b = "hi"
   puts a     # low

That's going to happen whether a method call is involved or not.


David

-- 
Q. What is THE Ruby book for Rails developers?
A. RUBY FOR RAILS by David A. Black (http://www.manning.com/black)
    (See what readers are saying!  http://www.rubypal.com/r4rrevs.pdf)
Q. Where can I get Ruby/Rails on-site training, consulting, coaching?
A. Ruby Power and Light, LLC (http://www.rubypal.com)