Rubyで配列を複製するにはdup
かnew
を使います。
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を改変してしまい混乱しました。