增加散列值

时间:2015-11-01 19:08:30

标签: ruby hash

我想将第一项的值递增一。我不明白为什么我的代码不能正常工作

puts sales_hash
sales_hash.values[0] = sales_hash.values[0] +1
puts sales_hash

我在sales_hash的第一个值中加1。当我打印出sales_hash时,第一个值保持不变。我做错了什么?

1 个答案:

答案 0 :(得分:2)

当您使用Hash#values时,您会收到一个包含散列中所有值的副本的数组。因此,您的赋值不会更改散列本身,而是更改包含值的数组。

此外,您应该知道哈希中的元素按其键的插入顺序排序,如果您访问某个"位置,则可能会导致意外结果。在哈希中,因为插入和删除可能会改变哈希的顺序。

如果要更新哈希值,则应使用密钥访问它,例如:sales_hash[:my_sale] = sales_hash[:my_sale] +1