Project

General

Profile

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*]]

Back