2011-12-16 54 views
3

我需要一個對象的深層副本。 我知道只有這樣,才能使一個對象的深層副本 與以下:深含PROC收集的模仿對象

Marshal.load(Marshal.dump(my_object)) 

令我失望的是,我發現,如果被深複製對象的一些元素 是一個進程內對象 然後我得到一個錯誤,因爲proc對象不是 有一個轉儲方法,不能被深度複製, 的方式。

如何使一個對象的深層副本在他們 特效?

+0

不同的變體存在,但它們要麼過於籠統或過於具體。 – ExternalReality 2011-12-16 04:45:18

回答

1

在Ruby中深拷貝使用clone應該做的伎倆。 (編組不適用於某些對象......如果Proc屬於該類別,則它是有意義的)。

clone是一種慣例,這意味着深拷貝,即使深副本不會在Ruby中支持開箱即用。然而,an answer on SO to a similar question有一個非常良好的,通用的,實現這個問題的clone

+0

根據1.9.3的對象類文檔,克隆表示淺拷貝。我可能不明白,你在說別的什麼嗎? – ExternalReality 2011-12-16 04:36:13