【问题标题】:changing the values on a hash function更改哈希函数的值
【发布时间】:2013-08-22 21:38:47
【问题描述】:

我正在学习关于哈希的 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 = { "拉面" => 3, "Dal Makhani" => 4, "咖啡" => 2 } restaurant_menu.each |项目,价格| restaurant_menu[item] = 价格 + (价格 * 0.1) 结束

如果我已经在迭代价格值,我不明白为什么需要额外调用哈希。

【问题讨论】:

  • 我不太了解红宝石,但我希望在您的原始代码中您只是更新本地(堆栈)变量“价格”,而不是存储在哈希表中的值。
  • 亚历克斯。你的意思是有一个价格的局部变量独立于哈希表中的那个?
  • 是的,这就是我的意思,堆栈上的一个变量,在每次迭代期间被分配从哈希表中提取的值。即与哈希表中的“价格”字段不同的内存位置(引用、指针、选择您喜欢的术语)。

标签: loops hash each


【解决方案1】:

您没有更新原始哈希。要更新原始哈希,您应该这样做:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-11
    • 2021-12-07
    • 1970-01-01
    • 1970-01-01
    • 2021-04-21
    • 2012-11-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多