如果密钥存在于哈希中,则更改哈希值

时间:2012-10-21 15:52:45

标签: ruby

如果密钥存在于哈希中,我试图改变哈希的值。我有我的算法工作将它改为正确的值唯一的问题是它改变哈希中的所有值而不是我想要的值。我如何只更改哈希值中的某些值?

我尝试过hash.has_key?(key)方法,它仍然会改变我的所有值

if @hash.has_key?(k)
  @hash.select {|k,v| v.price = (v.price/100)}
else 
  print "Key not found"
end

1 个答案:

答案 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