Rubyでは基本的に配列は一次元。多次元配列を定義する方法はいつくかあるようだが、その中の一つ。
da=Array.new(3).map!{Array.new}
配列の初期化ついては注意が必要。
da=Array.new(3,Array.new(4,0))
のようにnewの引数に初期値を与えると、3個の配列がすべて同じオブジェクトになってしまう。
da[0][1]=7 p da #=> [[0,7,0,0],[0,7,0,0],[0,7,0,0]]
da=Array.new(3).map!{Array.new(4){0}}
のようにブロックを使用すれば大丈夫。
*確認したところ、
da=Array.new(3).map!{Array.new(4,0)}
でも問題なかったが、ブロック文の方が安全か。
一次元配列でさらに確認してみると、
ary=Array.new(3,"foo") ary[0].capitalize! p ary #=>gt;["Foo", "Foo", "Foo"]
とすべての要素が化けてしまうが、最後が破壊的メソッドでなく
ary[0]=ary[0].capitalize
のように代入してしえば一つの要素だけを変更できる。
とりあえず、配列の取扱いは代入を基本としている限りは大丈夫そうだが
念のためブロックを使って初期化するに越したことはない。