【发布时间】:2017-01-21 08:22:44
【问题描述】:
我有一个对象 id 为 19475160 的散列,我需要克隆我的散列,我该怎么做?我发现的每一个谷歌搜索和文章都指向我的 rails 解决方案,但我找不到任何常规的 ruby 解决方案。
【问题讨论】:
-
你想要一个变量的深拷贝吗?
标签: ruby
我有一个对象 id 为 19475160 的散列,我需要克隆我的散列,我该怎么做?我发现的每一个谷歌搜索和文章都指向我的 rails 解决方案,但我找不到任何常规的 ruby 解决方案。
【问题讨论】:
标签: ruby
这将做一个对象的浅拷贝:
obj2 = obj.clone
这将对对象进行深层复制:
obj2 = Marshal.load(Marshal.dump(obj))
【讨论】:
您可以使用dup。
h = {a:1}
h2 = h.dup
h[:a] = 2
h2
=> {:a=>1}
h 和 h2 有不同的 object_id。
生成 obj 的浅表副本——复制 obj 的实例变量,但不复制它们引用的对象。
【讨论】: