【发布时间】:2011-05-08 15:05:43
【问题描述】:
我承认我是一个红宝石新手(现在正在编写 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 关联的单例类重复或不。见stackoverflow.com/questions/10183370/…
标签: ruby serialization hashmap copy deep-copy