Bug #13797
Updated by nobu (Nobuyoshi Nakada) over 6 years ago
I was building a class to hold results for analysis 'cells' in a model; each 'cell' is a position in an array, with each result stored in a sub-array - this collates multiple results per cell which can then be iterated through later for model interactions. I created this as a class (my data is addressed by time,x,y and z coordinates; my class writers and readers convert t-x-y-z into a position on a 1d array, this is faster than named instance variables). When it comes to pushing the data into the instance array variable it causes *all* the slots of the array to be pushed with the value. This is my first bug report and I'm newish to Ruby so I apologise if I've missed any key information. I attach code with a test-example I wrote which demonstrates the behaviour in question. ## NORMAL CASE ```ruby testArray **testArray** = [[],[],[],[],[]] testArrayShouldLookLike **testArrayShouldLookLike** = [[result1],[],[],[],[]] [[*result1*],[],[],[],[]] testArrayCanThenLookLike **testArrayCanThenLookLike** = [[result1, result2],[],[],[],[]] [[*result1*, *result2*],[],[],[],[]] etc. ``` ## CLASS CASE ```ruby def **def** write(position, data) @testArray[position].push(data) end **end** testArrayComesOutAs **testArrayComesOutAs** = [[result1],[result1],[result1],[result1],[result1]] ``` [[*result1*],[*result1*],[*result1*],[*result1*],[*result1*]]