[技巧]实现深度克隆(clone)
本帖最后由 2gua 于 2010-12-07 11:35 编辑Ruby提供了一个Object#clone方法实现对象复制,但这个方法只是实现“影子”复制(浅复制),也就是说,不复制引用到的对象。
Object#clone:
生成一个“影子”复制 - 实例变量将被复制,但不复制引用到的对象。
如果你需要深度clone一个对象 - 也需要复制引用到的对象 - Marshal模块(the Marshal module)可以成为你的朋友:
deep_cloned = Marshal::load(Marshal.dump(origin))
en, 但该方法不能克隆singleton。
页:
[1]