maeshimaの日記

メモ書きです

Array.new

第一引数に要素の数を指定できる。第二引数にオブジェクトを指定すると、そのオブジェクトが第一引数の数格納された配列を返す。この場合、配列の全部の要素が同じオブジェクトを指すので、別々にしたい場合はブロックを使う。

a = Array.new(2, {}) #=> [{}, {}] 
a[0]["hoge"] = "fuga"
a #=> [{"hoge"=>"fuga"}, {"hoge"=>"fuga"}] 
b = Array.new(2) { {} } #=> [{}, {}] 
b[0]["hoge"] = "fuga"
b #=> [{"hoge"=>"fuga"}, {}] 

ブロックの引数にはインデックスが入る

Array.new(5) { |i| i*i} #=> [0, 1, 4, 9, 16]

配列を引数に入れると、コピーした配列を返す。

a = [1, 2]
b = Array.new(a) #=> [1, 2] 
a[2] = 3
a #=> [1, 2, 3] 
b #=> [1, 2]

参考

プログラミングRuby 第2版 ライブラリ編
Dave Thomas Chad Fowler Andy Hunt
オーム社
売り上げランキング: 228524