Tag: dup

复制Ruby字符串数组

arr = [“red”,”green”,”yellow”] arr2 = arr.clone arr2[0].replace(“blue”) puts arr.inspect puts arr2.inspect 生产: [“blue”, “green”, “yellow”] [“blue”, “green”, “yellow”] 无论如何都要做一个字符串数组的深层副本,除了使用Marshal,因为我知道这是一个黑客。 我可以: arr2 = [] arr.each do |e| arr2 << e.clone end 但它似乎并不优雅或高效。 谢谢

Ruby递归/克隆递归

我有一个哈希: 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’ pd #=> {“name”=>”sayuj1”, “project”=>{“duration”=>”xyz”, “project_name”=>”abc”}, “age”=>22} ph #=> {“name”=>”sayuj”, “project”=>{“duration”=>”xyz”, “project_name”=>”abc”}, “age”=>22} 在这里你可以看到project[‘duration’]在原始哈希中被更改,因为project是另一个哈希对象。 我想要递归地duped或克隆哈希。 我怎样才能做到这一点?