包含proc对象的集合的深层副本

时间:2011-12-16 02:53:28

标签: ruby

我需要制作一个对象的深层副本。 我知道做出深层复制的唯一方法 一个对象具有以下内容:

Marshal.load(Marshal.dump(my_object))
令我沮丧的是,我发现如果有一些元素 深度复制的对象是proc对象 然后我得到一个错误,因为proc对象没有 有一个dump方法,不能深入复制那个 方式。

如何制作对象的深层副本 在他们中划过?

1 个答案:

答案 0 :(得分:1)

使用clone在Ruby中进行深层复制应该可以解决问题。 (编组不适用于某些对象......如果Procs属于该类别,则有意义。)

clone是一种约定深度复制的约定,即使Ruby中不支持深层复制也是如此。但是,an answer on SO to a similar question具有clone

的非常好的通用实现