我有一些simple_hash:
old_hash = {"New"=>"0"}
我想将其转换为新格式:
new_hash = old_hash.keys.each do |key|
hash = Hash.new
hash[key] = {count: old_hash[key]}
hash
end
但是此代码返回给我:
["New"]
而不是:
{"New"=>{:count=>"0"}}
问题是为什么?
答案 0 :(得分:2)
您将块的语法与方法的语法混淆。在您的代码中,new_hash
获取old_hash.keys
的值,这不是您想要的。
稍作修改:
new_hash = Hash.new
old_hash.keys.each do |key|
new_hash[key] = {count: old_hash[key]}
end
答案 1 :(得分:0)
这样做:
hash = Hash.new
new_hash = old_hash.keys.each do |key|
hash[key] = {count: old_hash[key]}
hash
end
hash
# => {"New"=>{:count=>"0"}}
由于您在循环中放置了hash = Hash.new
,因此每次都会创建一个新哈希。