From: Andrew Salveson Date: 2009-04-14T05:42:07+09:00 Subject: changing array values What I'd like is an array of objects, each of which contains an array of integers, and each successive object in the array should contain a slightly different array of integers than the previous object. For some reason, when I run the code below: class TEST def initialize(args) @args = args end def describe return @args.join(", ") end end def test old = [0,0,0,0,0,0] tests = [] 5.times do |i| new = old new[rand(old.size)] = rand(5) # randomly changes one of the members of the array to a number from 0 to 4 tests[i] = TEST.new(new) puts tests[i].describe end return tests end I get this output: 0, 0, 0, 0, 0, 0 0, 0, 0, 0, 0, 1 0, 0, 0, 0, 0, 4 0, 0, 0, 2, 0, 4 0, 0, 1, 2, 0, 4 [#, #, #, #, #] As you can see, each object in the object array contains the last array of integers, even though the objects are being initialized with different arrays of integers. Strangely enough, if I use a single integer everywhere I here use an array, everything works just fine. I cannot for the life of me figure out why this is happening and would be extremely grateful it if someone could enlighten me . . . -- Posted via http://www.ruby-forum.com/.