Array.newのデフォルト値
今日のはまり
irb(main):001:0> ary=Array.new(3,[]) => [[], [], []] irb(main):002:0> ary[1].push("test") => ["test"] irb(main):003:0> ary => [["test"], ["test"], ["test"]] irb(main):004:0> ary=[[],[],[]] => [[], [], []] irb(main):005:0> ary[1].push("test") => ["test"] irb(main):006:0> ary => [[], ["test"], []]
Array.newのデフォルト値の設定で[]を入れてしまうと、
初期化してから個数分代入するようだ。
よって、要素がすべて同じものが入ってしまう。
よって、個数分繰り返すのが正解のようだ。
irb(main):001:0> ary=[];3.times{ary.push([])} => 3 irb(main):002:0> ary => [[], [], []] irb(main):003:0> ary[1].push("test") => ["test"] irb(main):004:0> ary => [[], ["test"], []] irb(main):005:0>