4

如果密钥存在于散列中,我正在尝试更改散列的值。我有我的算法将其更改为正确的值,唯一的问题是它会更改哈希中的所有值,而不仅仅是我想要的值。如何仅更改哈希中的某些值?

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

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

1 回答 1

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
于 2012-10-21T16:07:12.170 回答