我承认我是一位Ruby新手(目前正在编写rake脚本)。在大多数语言中,复制构造函数很容易找到。但在Ruby中,我搜索了半个小时也没有找到。我想创建哈希表的副本,以便我可以修改它而不影响原始实例。
以下是一些预期不起作用的方法:
h0 = { "John"=>"Adams","Thomas"=>"Jefferson","Johny"=>"Appleseed"}
h1=Hash.new(h0)
h2=h1.to_hash
同时,我已经采用了这种不太优雅的解决方法。
def copyhash(inputhash)
h = Hash.new
inputhash.each do |pair|
h.store(pair[0], pair[1])
end
return h
end
Hash
对象,提供的答案是很好的。但如果你正在处理来自你无法控制的类似Hash
的对象,你应该考虑是否要复制与Hash
相关联的单例类。请参见https://dev59.com/FGkw5IYBdhLWcg3wBmGA。 - Sim