class Object
From blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/43424
Public Instance Methods
deep_clone(cache={})
click to toggle source
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
# File lib/api/object_additions.rb, line 26 def deep_clone(cache={}) return cache[self] if cache.key?(self) copy = clone() cache[self] = copy copy.instance_variables.each do |var| val = instance_variable_get(var) begin val = val.deep_clone(cache) rescue TypeError next end copy.instance_variable_set(var, val) end return copy end