From: "-E:), niku" Date: 2011-09-25T14:11:52+09:00 Subject: [ruby-list:48409] Re: 要素のない配列の挙動? にくといいます Marshal はどうでしょうか. inner1 = [1,2,3] inner2 = [4,5,6] outer = [inner1, inner2] cloned = outer.clone dumped = Marshal.load(Marshal.dump(outer)) outer # => [[1, 2, 3], [4, 5, 6]] cloned # => [[1, 2, 3], [4, 5, 6]] dumped # => [[1, 2, 3], [4, 5, 6]] inner1[0] = "changed" inner1 # => ["changed", 2, 3] outer # => [["changed", 2, 3], [4, 5, 6]] cloned # => [["changed", 2, 3], [4, 5, 6]] dumped # => [[1, 2, 3], [4, 5, 6]] るりま「値渡しと参照渡しの違いを理解する」の http://jp.rubyist.net/magazine/?0032-CallByValueAndCallByReference 「参照の値渡し」も参考になるかもしれません. 僕はあんまりこのあたりを覚えていなくて,使おうとすると混乱するので 個人的にはできるだけ配列への再代入を使わなくてもすむようにプログラミングしています.