我需要一個對象的深層副本。 我知道只有這樣,才能使一個對象的深層副本 與以下:深含PROC收集的模仿對象
Marshal.load(Marshal.dump(my_object))
令我失望的是,我發現,如果被深複製對象的一些元素 是一個進程內對象 然後我得到一個錯誤,因爲proc對象不是 有一個轉儲方法,不能被深度複製, 的方式。
如何使一個對象的深層副本在他們 特效?
我需要一個對象的深層副本。 我知道只有這樣,才能使一個對象的深層副本 與以下:深含PROC收集的模仿對象
Marshal.load(Marshal.dump(my_object))
令我失望的是,我發現,如果被深複製對象的一些元素 是一個進程內對象 然後我得到一個錯誤,因爲proc對象不是 有一個轉儲方法,不能被深度複製, 的方式。
如何使一個對象的深層副本在他們 特效?
在Ruby中深拷貝使用clone
應該做的伎倆。 (編組不適用於某些對象......如果Proc屬於該類別,則它是有意義的)。
clone
是一種慣例,這意味着深拷貝,即使深副本不會在Ruby中支持開箱即用。然而,an answer on SO to a similar question有一個非常良好的,通用的,實現這個問題的clone
根據1.9.3的對象類文檔,克隆表示淺拷貝。我可能不明白,你在說別的什麼嗎? – ExternalReality 2011-12-16 04:36:13
不同的變體存在,但它們要麼過於籠統或過於具體。 – ExternalReality 2011-12-16 04:45:18