Re: [問題] 關於dup
※ 引述《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
討論串 (同標題文章)
Ruby 近期熱門文章
PTT數位生活區 即時熱門文章