NArrayライブラリを使わないRuby多次元配列

Rubyでは、なんと多次元配列をC言語Java・・・etcのように作ることができない!!

なんということだ・・・

うーん入れ子構造にすれば・・・

array = Array.new(5,Array.new(5)

これで出来るだろ・・・w

!!?

irb(main):001:0> array = Array.new(5,Array.new(5))
=> [[nil, nil, nil, nil, nil], [nil, nil, nil, nil, nil], [nil, nil, nil, nil, nil], [nil, nil, nil, nil, nil], [nil, nil, nil, nil, nil]]
irb(main):002:0> array[0][0] = 3
=> 3
irb(main):003:0> p array
[[3, nil, nil, nil, nil], [3, nil, nil, nil, nil], [3, nil, nil, nil, nil], [3, nil, nil, nil, nil], [3, nil, nil, nil, nil]]
=> nil
irb(main):004:0> 

・・・?3がいっぱい・・・???


というわけで無理なようです。
入れ子構造には変わりないようですが、こう書くといいみたいです。

array = Array.new(5).map!{Array.new(5,0)} #0は初期化

もしくは

array = Array.new(5)
array.each_index{|y| array[y] = Array.new(5,0)}

らしいです。

結果

irb(main):001:0> array = Array.new(5).map!{Array.new(5,0)}
=> [[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]
irb(main):002:0> array[0][1] = 3
=> 3
irb(main):003:0> p array
[[0, 3, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]

というわけです。
NArrayライブラリを

sudo gem install narray

でいいのかな・・・?ggrks

で入れてもいいけども2、3次元配列用クラスを自作しておいてもいいのではないでしょうか??

追記

isaisstillaliveさんからご指摘がありました。
どうやら

image = Array.new(5){Array.new(5,0)}

で大丈夫みたいです^^

isaisstillaliveさんに感謝