我想將第一個項目的值加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}'。以這種方式使用散列鍵的順序是不尋常的,但是你可以這樣做。 –