From: Florian Gross Date: 2005-02-17T08:19:50+09:00 Subject: Re: A little bit confused about array+array addition (bug or expected behavior?) gga wrote: > irb(main):082:0> def add(x) > irb(main):084:1> x += [5,6] > irb(main):085:1> end > > irb(main):087:0> add(a) > => [1, 2, 3, 4, 5, 6] > irb(main):088:0> a > => [1, 2, 3, 4] ===>>> uh? am I not passing stuff by reference? > where is 5, 6? You are not passing variables by reference, you are passing objects by reference. Ruby does not have a built-in way of doing variable by reference as variables are usually not first-class objects. (They are names for objects.) You probably want to do x.replace(x + [5, 6]) or x.push(5, 6) which modify the object itself. This has come up frequently in the past -- if you are willing to do a bit of research on google groups you will find implementations of first-class variable objects, using lambdas for modifying variables in other scopes and more.