我想将第一项的值递增一。我不明白为什么我的代码不能正常工作
puts sales_hash
sales_hash.values[0] = sales_hash.values[0] +1
puts sales_hash
我在sales_hash
的第一个值中加1。当我打印出sales_hash
时,第一个值保持不变。我做错了什么?
答案 0 :(得分:2)
当您使用Hash#values
时,您会收到一个包含散列中所有值的副本的数组。因此,您的赋值不会更改散列本身,而是更改包含值的数组。
此外,您应该知道哈希中的元素按其键的插入顺序排序,如果您访问某个"位置,则可能会导致意外结果。在哈希中,因为插入和删除可能会改变哈希的顺序。
如果要更新哈希值,则应使用密钥访问它,例如:sales_hash[:my_sale] = sales_hash[:my_sale] +1