复制哈希而不指向同一个对象

时间:2015-07-21 12:09:15

标签: ruby hash

我想将一个哈希值复制到一个新的哈希值,稍后再使用它。前一个将改变,我不想使用改变的那个。

我做了:

findInterval(x, interval.vector + 1L, all.inside = TRUE)
## [1] 1 1 2 2 3 4

hash_2 = Hash.new() hash_2 = hash_1.clone 发生变化时,hash_1也会发生变化,我无法弄清楚我做错了什么。

1 个答案:

答案 0 :(得分:1)

你可以使用' Marshal'深刻复制。

h1 = {:key_1 => {:sub_1 => "sub_1", :sub_2 => "sub_2"}}

h2 = Marshal.load(Marshal.dump(h1))

h2[:key_1][:sub_1] = "SUB_1"
h2[:key_1].delete(:sub_2)

p h1
# => {:key_1=>{:sub_1=>"sub_1", :sub_2=>"sub_2"}}
p h2
# => {:key_1=>{:sub_1=>"SUB_1"}}