如果密钥存在于哈希中,我试图改变哈希的值。我有我的算法工作将它改为正确的值唯一的问题是它改变哈希中的所有值而不是我想要的值。我如何只更改哈希值中的某些值?
我尝试过hash.has_key?(key)方法,它仍然会改变我的所有值
if @hash.has_key?(k)
@hash.select {|k,v| v.price = (v.price/100)}
else
print "Key not found"
end
答案 0 :(得分:7)
has_key?
不是您的问题... Hash#select
会迭代所有值。
以下是两个选项:
@hash.select{|k,v| v.price /= 100 if k == key}
或
if @hash.has_key?(key)
@hash[key].price /= 100
else
print "Key not found"
end