我的代码是:
hash = { two: 2, three: 3 }
def hash_add(hash, new_key, new_value)
temp_hash = {}
temp_hash[new_key.to_sym] = new_value
temp_hash.merge!(hash)
hash = temp_hash
puts hash
end
hash_add(hash, 'one', 1)
在方法内,puts hash
返回{ :one => 1, :two => 2, :three => 3 }
,但当hash1
放入方法时,之后保持不变。就像分配没有将自己带到功能之外。
我想我可以返回更新的哈希并在方法之外设置我想要更改的哈希:
hash = hash_add(hash, 'one', 1)
但我只是不明白为什么我给散列的赋值不会超出方法。
我有这个,它有效:
def hash_add(hash, new_key, new_value)
temp_hash = {}
temp_hash[new_key.to_sym] = new_value
temp_hash.merge!(hash)
hash.clear
temp_hash.each do |key, value|
hash[key] = value
end
end
当调用此方法时,这给了我想要的东西,但是必须像这样重建哈希似乎有点过分。