2011-12-16 53 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