Hi -- On Sat, 27 Jan 2007, Robert Klemme wrote: > On 27.01.2007 01:43, 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). > > Absolutely right: Ruby uses pass by value - with references. > > irb(main):004:0> def foo(x) x = 10 end > => nil > irb(main):005:0> def bar; x = 20; foo(x); x end > => nil > irb(main):006:0> bar > => 20 > irb(main):007:0> I'm not sure that demonstrates the "values that are references" thing, though. You're reassigning to x in foo, which creates a new local x; but I think that's just part of the assignment semantics. Or are you assuming that if pass by reference were involved, then assignment would work differently? 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)