我想将第一个项目的值加1。我不明白为什么我的代码不工作增加散列值
puts sales_hash
sales_hash.values[0] = sales_hash.values[0] +1
puts sales_hash
我在sales_hash
加1第一个值。当我打印出sales_hash
时,第一个值保持不变。我究竟做错了什么?
我想将第一个项目的值加1。我不明白为什么我的代码不工作增加散列值
puts sales_hash
sales_hash.values[0] = sales_hash.values[0] +1
puts sales_hash
我在sales_hash
加1第一个值。当我打印出sales_hash
时,第一个值保持不变。我究竟做错了什么?
当您使用Hash#values
时,您会收到一个数组,其中包含散列中所有值的副本。因此,您的分配不会更改散列本身,而是包含值的数组。另外,你应该知道散列中的元素是按照它们的键的插入顺序排序的,如果你访问散列中的某个“位置”,这可能会导致意想不到的结果,因为插入和删除可能会改变哈希。
如果要更新哈希值,你应该使用它的键来访问它,例如:sales_hash[:my_sale] = sales_hash[:my_sale] +1
也许你想:'H => {:A => 1,B => 2 }; h [h.keys.first] + = 1; h#=> {:a => 2,:b => 2}'。以这种方式使用散列键的顺序是不寻常的,但是你可以这样做。 –