From: Kent Sibilev Date: 2005-06-18T09:04:28+09:00 Subject: Re: Why do arrays work this way? When you make an assignment b = a, you assign the variable 'b' a reference to the same array variable 'a' refers to. If you want to have a copy of array a use dup method like b = a.dup Kent. On 6/17/05, Nigel Wilkinson wrote: > Hi folks > > I'm using ruby 1.8.2 as comes with Mandriva 2005LE and get the following > behaviour with arrays which doesn't seem logical to me. > > In irb I do > > irb(main):058:0* a=[1,2,3,4,5] > => [1, 2, 3, 4, 5] > > straight forward enough > > irb(main):059:0> b=a > => [1, 2, 3, 4, 5] > irb(main):060:0> c=a > => [1, 2, 3, 4, 5] > > I've set 2 more variables to equal 'a' > > irb(main):061:0> b[3] = 'w' > => "w" > > I believe this changes index 3 in'b' to now be equal to 'w' > > do > irb(main):062:0> b > => [1, 2, 3, "w", 5] > > that's exactly as I expected, BUT > > irb(main):063:0> a > => [1, 2, 3, "w", 5] > irb(main):064:0> c > => [1, 2, 3, "w", 5] > > so what's the logic behind 'a' & 'c' changing when I change 'b'. > > Is this a bug? and if not what's the reasoning behind this behaviour please. > > > > Best Rgds from confused of Heathfield > Nigel > __________________________________________________________________________ > Disclaimer > Any opinions expressed in this email are not necessarily those of my wife > >