【发布时间】:2012-02-01 09:31:22
【问题描述】:
我有一个像这样的哈希:
h = {'name' => 'sayuj',
'age' => 22,
'project' => {'project_name' => 'abc',
'duration' => 'prq'}}
我需要这个哈希的副本,更改不应影响原始哈希。
当我尝试时,
d = h.dup # or d = h.clone
d['name'] = 'sayuj1'
d['project']['duration'] = 'xyz'
p d #=> {"name"=>"sayuj1", "project"=>{"duration"=>"xyz", "project_name"=>"abc"}, "age"=>22}
p h #=> {"name"=>"sayuj", "project"=>{"duration"=>"xyz", "project_name"=>"abc"}, "age"=>22}
在这里您可以看到 project['duration'] 在原始哈希中发生了更改,因为 project 是另一个哈希对象。
我希望哈希是 duped 或 cloned 递归。我怎样才能做到这一点?
【问题讨论】:
标签: ruby hash clone hash-of-hashes dup