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
[#<TEST:0x3f3d9f0 @args=[0, 0, 1, 2, 0, 4]>,
#<TEST:0x3f3d9d8 @args=[0, 0, 1, 2, 0, 4]>,
#<TEST:0x3f3d900 @args=[0, 0, 1, 2, 0, 4]>,
#<TEST:0x3f3d828 @args=[0, 0, 1, 2, 0, 4]>,
#<TEST:0x3f3d750 @args=[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 . . .