Basically I'm trying to modify an element in a 2D array. How the array is initialized seems to be effecting the behaviour. I'm new to Ruby so I'm not sure how initializing an array would effect this. What am I missing to get the desired result from the desired initialization method?
arr_1 = [[0, 0, 0], [0, 0, 0], [0, 0, 0]] # undesired initialization
arr_2 = Array.new(3, Array.new(3, 0)) # desired initialization
arr_1[0][0] = 99
puts arr_1 # desired result below
=begin
99
0
0
0
0
0
0
0
0
=end
arr_2[0][0] = 99
puts arr_2 # undesired result
=begin
99
0
0
99
0
0
99
0
0
=end
Array.new(3) { Array.new(3, 0) }if you want multiple copies – seeArray::new– Common gotchasarr_2 = Array.new(3, Array.new(3, 0))thenarr_2.map { |a| a.object_id } #=> [1420, 1420, 1420]. What does that tell you?