将红宝石中的数字相加

时间:2012-02-26 23:05:10

标签: ruby

我有这样的哈希。

products = {199 =>['Shoes', 59.99], 211 =>['Shirts', 19.99], 245 =>['Hats', 25.99], 689 => ['Coats', 99.99], 712 => ['Beanies', 6.99]}

它有一个项目编号=> [product, price]

我想在不使用注入方法的情况下总结所有价格。

有人可以帮我吗?

4 个答案:

答案 0 :(得分:16)

products.values.map(&:last).reduce(:+) #=> 212.95

答案 1 :(得分:5)

为什么不使用注射?注入正是你想要的。

products.inject(0) { |total, (k, v)| total + v.last }

当然,您可以使用更具程序性的解决方案,但为什么呢?

答案 2 :(得分:1)

sum = 0
products.each { |key, value| sum += value.last }

答案 3 :(得分:0)

这应该适用于任何版本的Ruby,只使用内置函数:

products.values.map(&:last).reduce(&:+) # => 212.95