【问题标题】:How can i duplicate a record with ruby (outside of rails)?如何使用 ruby​​ 复制记录(在导轨之外)?
【发布时间】:2017-01-21 08:22:44
【问题描述】:

我有一个对象 id 为 19475160 的散列,我需要克隆我的散列,我该怎么做?我发现的每一个谷歌搜索和文章都指向我的 rails 解决方案,但我找不到任何常规的 ruby​​ 解决方案。

【问题讨论】:

标签: ruby


【解决方案1】:

这将做一个对象的浅拷贝:

 obj2 = obj.clone

这将对对象进行深层复制:

  obj2 = Marshal.load(Marshal.dump(obj))

【讨论】:

  • 谢谢,据我所知,请问浅拷贝和深拷贝有什么区别?
  • @alilland 与浅拷贝不同,深拷贝还会复制数据结构中的任何引用对象。
【解决方案2】:

您可以使用dup

h = {a:1}
h2 = h.dup
h[:a] = 2
h2
=> {:a=>1}

hh2 有不同的 object_id。

来自dup reference

生成 obj 的浅表副本——复制 obj 的实例变量,但不复制它们引用的对象。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-04
    相关资源
    最近更新 更多