作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我做了一些搜索,发现了一些关于创建深复制运算符的不同方法和帖子。
在 Ruby 中是否有快速简单(内置)的深度复制对象的方法?这些字段不是数组或散列。
使用 Ruby 1.9.2。
最佳答案
普通 Ruby 中并未内置深拷贝,但您可以通过编码和解码对象来破解它:
Marshal.load(Marshal.dump(@object))
但这并不完美,并且不适用于所有对象。更稳健的方法:
class Object
def deep_clone
return @deep_cloning_obj if @deep_cloning
@deep_cloning_obj = clone
@deep_cloning_obj.instance_variables.each do |var|
val = @deep_cloning_obj.instance_variable_get(var)
begin
@deep_cloning = true
val = val.deep_clone
rescue TypeError
next
ensure
@deep_cloning = false
end
@deep_cloning_obj.instance_variable_set(var, val)
end
deep_cloning_obj = @deep_cloning_obj
@deep_cloning_obj = nil
deep_cloning_obj
end
end
来源:
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/43424
关于ruby-on-rails - 如何在 Ruby 中创建对象的深拷贝?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8206523/
我是一名优秀的程序员,十分优秀!