配列の配列
配列の配列を作り方を聞かれて、なぜ下の例はダメなのかわからなかったのでメモ。(今まで動的に追加する配列しか作ったことなかった!)
$ ruby -e ' ary = Array.new(3, Array.new(2)) p ary ary[1][1] = "1-1" p ary ' [[nil, nil], [nil, nil], [nil, nil]] [[nil, "1-1"], [nil, "1-1"], [nil, "1-1"]]
ary[0] も ary[1] も ary[2] も同じオブジェクトを指しているから。
正しくはこうか:
ary = Array.new(3) { Array.new(2) }
(最初 map を使ってた。1.8 で追加されたのね。)