Ruby 配列を複製する

Rubyで配列を複製するにはdupnewを使います。

dup

Foo.arrayを複製します。arrayに追加してもFoo.arrayには影響しません。

array = Foo.array.dup
array.push "追加"

new

Foo.arrayを複製します。arrayに追加してもFoo.arrayには影響しません。

array = Array.new( foo.array )
array.push "追加"

参照渡し

そのままFoo.arrayを渡すと参照渡しになります。arrayに追加するとFoo.arrayに追加されます。

array = Foo.array
array.push "追加"

余談

一番下の配列代入が参照渡しだと分かってなくて、値が複製されているんだろうなと思い込んでいたので、意図せずFoo.arrayを改変してしまい混乱しました。