Loops 更改哈希函数上的值

Loops 更改哈希函数上的值,loops,hash,each,Loops,Hash,Each,我正在做有关哈希的RubyMonk练习 其做法是将餐厅菜单的价格调整10%。 我的解决方案不正确。我迭代了每个元组,只更改了price值 restaurant_menu = { "Ramen" => 3, "Dal Makhani" => 4, "Coffee" => 2 } restaurant_menu.each do |item, price| price = price * 1.1 end 正确的解决方案就在这里。 餐厅菜单={“拉面”=>3,“达尔马克哈尼”=>

我正在做有关哈希的RubyMonk练习 其做法是将餐厅菜单的价格调整10%。 我的解决方案不正确。我迭代了每个元组,只更改了price值

restaurant_menu = { "Ramen" => 3, "Dal Makhani" => 4, "Coffee" => 2 }
restaurant_menu.each do |item, price|
  price = price * 1.1
end
正确的解决方案就在这里。 餐厅菜单={“拉面”=>3,“达尔马克哈尼”=>4,“咖啡”=>2} 餐厅菜单,每一项,价格| 餐厅菜单[项目]=价格+(价格*0.1) 结束


我不明白,如果我已经在迭代price值,为什么需要额外调用hash

您没有更新原始哈希。要更新原始哈希,应执行以下操作:

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

我重命名为
item,price
key,value
,以弄清这里发生了什么。我希望这是有道理的。如果没有,请留下评论。

我对ruby了解不多,但我希望在您的原始代码中,您只是更新了本地(堆栈)变量“price”,而不是存储在hash table.Alex中的值。你的意思是价格有一个局部变量,独立于哈希表中的一个?是的,这就是我的意思,堆栈上的一个变量,在每次迭代过程中被分配从哈希表中取出的值。i、 e.与哈希表中的“价格”字段不同的内存位置(引用、指针、选择您喜欢的术语)。