Re: [問題] 關於dup

看板Ruby作者 (godfat 真常)時間17年前 (2008/09/18 14:38), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《wwwc (secret)》之銘言: : a = [[0,0], [0,0]] : b = a.dup => a = [[0,0], [0,0]] b = [[0,0], [0,0]] : b[0][0] = 1 => a = [[1,0], [0,0]] b = [[1,0], [0,0]] : ^^^^^^^^^^^^^^ : 我希望改變b不會影響a : 也就是a = [[0,0], [0,0]] : b = [[1,0], [0,0]] : 應該怎麼做呢?謝謝! 因為 dup 和 clone 都是 shallow copy, 而不是 deep copy. 關於 deep copy, 有個 idiom 是: Marshal.load(Marshal.dump(object)) 你可以安裝 facets, 他在 Kernel 中加入了 deep_copy, 就是上面那行。 so: a = [[0,0], [0,0]] b = a.deep_copy b[0][0] = 1 p a # => [[0,0], [0,0]] -- Hear me exalted spirits. Hear me, be you gods or devils, ye who hold dominion here: I am a wizard without a home. I am a wonderer seeking refuge. Sacrifice -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.128.121.85

09/18 14:40, , 1F
太感謝了!
09/18 14:40, 1F
文章代碼(AID): #18qVU3d2 (Ruby)
討論串 (同標題文章)
本文引述了以下文章的的內容:
17年前, 09/18
完整討論串 (本文為第 2 之 2 篇):
1
1
17年前, 09/18
文章代碼(AID): #18qVU3d2 (Ruby)