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

Ruby实现支持任意数量参数的Hash卡路里统计函数

Ruby 卡路里统计器:实现支持任意参数的order函数

你需要用可变位置参数(*items)来改造order函数,**是用来接收关键字参数的,和你要传的位置参数不匹配,所以之前用**a没效果。

直接上可用的实现代码:

@menu = {
  "hamburger" => 250,
  "Cheese burger" => 350, 
  "cola" => 35, 
  "salad" => 120,
  "dessert" => 350
}

def order(*items)
  # 累加所有传入菜品的卡路里,不存在的菜品默认计0(可根据需求调整)
  items.sum { |item| @menu.fetch(item, 0) }
end

使用示例

  • 单个菜品调用:order("hamburger") → 返回 250
  • 多个菜品调用:order("Cheese burger", "salad") → 返回 470
  • 若想对不存在的菜品报错,把fetch(item, 0)改成fetch(item)即可,此时传入未在菜单里的菜品会抛出KeyError

原理说明

  • *items会自动把所有传入的位置参数打包成一个数组,不管你传1个、2个还是N个参数,都能被正确接收
  • sum方法遍历这个数组,取出每个菜品对应的卡路里值并累加,完成统计

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 01:40:34