Rubymonk - 迭代哈希

时间:2016-01-07 20:10:54

标签: ruby hash iteration each

Ruby Monk(第4.1节 - 哈希)对餐馆进行了练习,并将价格提高了10%。网站上的指示是:<​​/ p>

  

使用每种方法将restaurant_menu中所有商品的价格提高10%。

     

请记住:在前面的示例中,我们只显示了散列中每个项目的键和值。但在本练习中,您必须修改哈希值并增加每个项目的值。

我的主要问题是,为什么这段代码通过了:

restaurant_menu = { "Ramen" => 3, "Dal Makhani" => 4, "Coffee" => 2 }
restaurant_menu.each do |item, price|
  restaurant_menu[item] = price + (price * 0.1)
end

VS。这个?

restaurant_menu = { "Ramen" => 3, "Dal Makhani" => 4, "Coffee" => 2 }
# write the each loop here. 
restaurant_menu.each do | item, price |
  puts "#{item}: $#{price + (price * 0.1)}" 
end

我假设它与[item]有关,我假设它是一个数组(?)和&#34;价格+(价格* 0.1)&#34;被添加到[item]数组。

其次,字符串插值可能使上述代码无法通过。 。 。提前感谢您帮助我更好地理解此代码。

1 个答案:

答案 0 :(得分:1)

执行此操作时:

restaurant_menu[item] = price + (price * 0.1)

您要将新价格分配给哈希的密钥(将存储新值 - 您可以通过调用restaurant_menu[item] 来检查它。)

执行此操作时:

 puts "#{item}: $#{price + (price * 0.1)}"

您要将新价格分配到任何地方(当您致电restaurant_menu[item]时,价格将保持不变)。

因此,您不会更改哈希值,代码也不会通过验证。