Ruby Dup / клон рекурсивно
У меня есть хеш, как:
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
рекурсивно. Как мне этого добиться?