Should this be the case i.e. I am misunderstanding, or is it a bug?
a = Array.new(3, Array.new(3))
a[1].fill('g')
=> [["g", "g", "g"], ["g", "g", "g"], ["g", "g", "g"]]
should it not result in:
=> [[nil, nil, nil], ["g", "g", "g"], [nil, nil, nil]]
Array.new(3, Array.new(3))
returns an array which contains the same array three times (in other words: the expression Array.new(3)
is evaluated exactly once and no copies are made).
What you probably want is Array.new(3) { Array.new(3) }
, which evaluates Array.new(3)
three times and thus gives you an array of three independent arrays.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With