2013-08-20 87 views
1

我正在通過哈希函數的RubyMonk練習 練習是將restaurant_menu的價格更改爲10%。 我的解決方案不正確。我遍歷每個元組並改變價格值。更改哈希函數的值

restaurant_menu = { "Ramen" => 3, "Dal Makhani" => 4, "Coffee" => 2 } 
restaurant_menu.each do |item, price| 
    price = price * 1.1 
end 

正確的解決方案在這裏。 restaurant_menu = {「Ramen」=> 3,「Dal Makhani」=> 4,「Coffee」=> 2} restaurant_menu.each do | item,price | restaurant_menu [項目] =價格+(價格×0.1) 結束

我不明白爲什麼對哈希額外的調用是必要的,如果我已經在價格值迭代。

+0

我不太瞭解ruby,但我期望在您的原始代碼中,您只需更新本地(堆棧)變量'price',而不是存儲在散列表中的值。 – Alex

+0

亞歷克斯。你的意思是有一個局部變量的價格獨立於哈希表中的一個? – jingyang81

+0

是的,這就是我的意思,堆棧中的變量在每次迭代期間被分配從哈希表中取出的值。即與哈希表中的'價格'字段不同的內存位置(參考,指針,選擇您喜歡的術語)。 – Alex

回答

0

您不更新原始散列。要更新原有的哈希你應該這樣做:

restaurant_menu.each do |key, value| 
    restaurant_menu[key] = value * 1.1 
end 

我改名爲item, pricekey, value弄清楚這到底是怎麼回事。我希望這是有道理的。如果沒有,請留下評論。