RUBY -散列和数组//方法用法说明

tag5nh1u  于 2022-11-04  发布在  Ruby
关注(0)|答案(3)|浏览(106)

我有一个哈希表,每个键都有一个值(一个整数),我想创建一个方法,我写一个数组作为参数,这个数组会写在不同键的名字里.
所以一旦我把数组给了方法,它会把每个元素的值加起来,但是我不知道如何遍历我的数组,把所有的元素都放在哈希表中,然后把它加起来,得到总值。
我的代码是:

DISHES_CALORIES = {
  "Hamburger" => 250,
  "Cheese Burger" => 300,
  "Veggie Burger" => 540,
  "Vegan Burger" => 350,
  "Sweet Potatoes" => 230,
  "Salad" => 15,
  "Iced Tea" => 70,
  "Lemonade" => 90
}

def poor_calories_counter(burger, side, beverage)
  DISHES_CALORIES[burger] + DISHES_CALORIES[side] + DISHES_CALORIES[beverage]
end

def calories_counter(orders)
  # TODO: return number of calories for a less constrained order
  sum = 0
  orders.each { |element| sum = sum + DISHES_CALORIES[":#{element}"] }
end
bihw5rsg

bihw5rsg1#

你很接近了,但是:
1.您不需要对订单进行任何操作即可将其作为索引。

  1. orders.each在完成时只会返回orders
    1.您需要处理DISHES_CALORIES[element],并返回nil
    可以将块传递给#sum
def calories_counter(orders)
  orders.sum { |order| CALORIES_COUNTER[order] || 0 }
end
bakd9h0s

bakd9h0s2#

您也可以使用默认值的哈希计算卡路里在所有地方没有错误

DISHES_CALORIES.default = 0

def calories_counter(orders)
  orders.sum { |element| DISHES_CALORIES[element] }
end
ljsrvy3e

ljsrvy3e3#

您可以允许多个菜单项,如下所示:

choices = ["Hamburger","Salad","Lemonade"]

p DISHES_CALORIES.values_at(*choices).sum # => 355

相关问题