2011年9月25日

[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
「参照の値渡し」も参考になるかもしれません.

僕はあんまりこのあたりを覚えていなくて,使おうとすると混乱するので
個人的にはできるだけ配列への再代入を使わなくてもすむようにプログラミングしています.


投稿者 xml-rpc : 2011年9月25日 14:11
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/106565
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。