Say*_*yuj 23 ruby hash clone hash-of-hashes dup
我有一个哈希:
h = {'name' => 'sayuj',
'age' => 22,
'project' => {'project_name' => 'abc',
'duration' => 'prq'}}
Run Code Online (Sandbox Code Playgroud)
我需要一个这个哈希的副本,更改不应该影响原始哈希.
当我尝试时,
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}
Run Code Online (Sandbox Code Playgroud)
在这里,您可以看到project['duration']原始哈希中的更改是因为project是另一个哈希对象.
我想要散列duped或cloned递归.我怎样才能做到这一点?
Ser*_*sev 39
以下是如何在Ruby中制作深层副本
d = Marshal.load( Marshal.dump(h) )
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9428 次 |
| 最近记录: |