我正在研究在ruby中学习一些Hash操作.代码是关于将每件商品的价格提高10%.为什么这段代码不起作用?
restaurant_menu = { "Ramen" => 3, "Dal Makhani" => 4, "Coffee" => 2 }
restaurant_menu.each do |item, price|
price = price + (price * 0.1)
end
Run Code Online (Sandbox Code Playgroud)
虽然这个做了:
restaurant_menu = { "Ramen" => 3, "Dal Makhani" => 4, "Coffee" => 2 }
restaurant_menu.each do |item, price|
restaurant_menu[item] = price + (price * 0.1)
end
Run Code Online (Sandbox Code Playgroud)
至于为什么后者比@Mike Manfrin所解释的更好的方式呢?
在第一个中,您将局部变量设置为price新价格,然后将其丢弃.item并且price仅限于他们使用的那一行.
在第二个示例中,您设置的变量restaurant_menu存在于每个块之外,因此这些更改将在each块运行完毕后保留.
| 归档时间: |
|
| 查看次数: |
58 次 |
| 最近记录: |