You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何对哈希表求和并计算basket中订单的总费用?

计算哈希表中订单的总费用

嘿,这个问题我帮你捋清楚哈!首先得先修正一下你给的哈希表语法,因为目前的写法在Ruby里是跑不通的。根据你的描述——每个商品的键关联数字是单价,数值代表数量,正确的哈希表结构应该是把每个商品的单价和数量配对存储,比如下面两种常见写法:

写法一:用嵌套哈希存单价和数量

basket = {
  "potato wedges" => { price: 4.45, quantity: 2 },
  "tiramisu" => { price: 4.95, quantity: 2 },
  "diet coke" => { price: 1.75, quantity: 2 }
}

写法二:用数组存单价和数量

basket = {
  "potato wedges" => [4.45, 2],
  "tiramisu" => [4.95, 2],
  "diet coke" => [1.75, 2]
}

接下来就可以用几种方法计算总费用了,核心逻辑都是遍历每个商品,算出单个商品的总价(单价×数量),再把所有总价累加:

方法一:用inject方法(Ruby里的经典累加方式)

如果是嵌套哈希结构:

total = basket.values.inject(0.0) do |sum, item|
  sum + (item[:price] * item[:quantity])
end

puts total # 输出结果:22.3

如果是数组结构:

total = basket.values.inject(0.0) do |sum, (price, quantity)|
  sum + (price * quantity)
end

puts total # 同样输出22.3

这里把初始值设为0.0是为了确保结果是浮点数,避免整数运算导致的精度问题。

方法二:用each循环(更直观易懂)

如果是嵌套哈希结构:

total = 0.0
basket.each do |_name, item|
  total += item[:price] * item[:quantity]
end

puts total # 输出22.3

数组结构的话只需要稍微调整循环里的取值:

total = 0.0
basket.each do |_name, (price, quantity)|
  total += price * quantity
end

puts total # 输出22.3

内容的提问来源于stack exchange,提问作者fairyduststars

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:43:44