From: Mike Stephens Date: 2011-01-18T12:05:51+09:00 Subject: Re: Calling by Reference - Two Questions Well, that is bizarre. In 1.8.6 I get: def myswap(arr) [arr[1], arr[0]] end def myswap!(arr) arr[0], arr[1] = arr[1], arr[0] end def myswap2!(arr) arr[0], arr[1] = arr[1], arr[0] arr end a = [2, 5] puts " start #{a} #{a.object_id} " #start 25 27431650 myswap a # => [5,2] (new object) puts " myswap #{a} #{a.object_id} " myswap 25 27431650 myswap! a # => [5,2] (a now is changed; note that the returned array isnot a) puts " myswap! #{a} #{a.object_id} " myswap! 52 27431650 myswap2! a puts " myswap2! #{a} #{a.object_id} " myswap2! 25 27431650 I have no idea why myswap! works and myswap2! doesn't. -- Posted via http://www.ruby-forum.com/.