我有一個哈希,其中每個鍵都有一個值(一個整數)。我想要做的是創建一個方法,我在其中寫一個陣列作為引數,這個陣列里面會寫有不同鍵的名稱。
因此,一旦我將陣列提供給該方法,它將對每個元素的所有值求和。但是我不確定如何遍歷我的陣列,并將所有元素放入哈希中,然后對其求和,得到總值。
我的代碼是:
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
uj5u.com熱心網友回復:
你很接近,但是:
- 您無需對訂單執行任何操作即可使其成為索引。
orders.each完成后會回傳orders。- 您需要處理
DISHES_CALORIES[element]回傳nil。
您可以將塊傳遞給#sum.
def calories_counter(orders)
orders.sum { |order| CALORIES_COUNTER[order] || 0 }
end
uj5u.com熱心網友回復:
您還可以使用哈希的默認值來計算所有地方的卡路里而不會出錯
DISHES_CALORIES.default = 0
def calories_counter(orders)
orders.sum { |element| DISHES_CALORIES[element] }
end
uj5u.com熱心網友回復:
您可以允許像這樣的多個選單項:
choices = ["Hamburger","Salad","Lemonade"]
p DISHES_CALORIES.values_at(*choices).sum # => 355
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/524505.html
標籤:数组红宝石哈希
