まくまくRubyノート
配列をコピーする
2011-10-15

配列のコピーは Array#dup

配列を = 演算子で別の変数に代入しても、参照がコピーされるだけなので、新しい配列オブジェクトは作成されません。 下記の例で、変数 ab は同じものを指していることが分かります。

a = [1, 2, 3]
b = a
b[0] = 'modified'

p a  # => ["modified", 2, 3]
p b  # => ["modified", 2, 3]

配列の要素そのものをコピーして新しい配列を作成するには、Array#dup() を使用します。

a = [1, 2, 3]
b = a.dup
b[0] = 'AAA'

p a  # => [1, 2, 3]
p b  # => ["AAA", 2, 3]
2011-10-15