在哈希中求和值

时间:2013-01-30 17:08:45

标签: ruby hashmap

在ruby中汇总哈希值的最佳方法是什么:

@price = { :price1 => "100", :price2 => "100", :price3 => "50" }

我现在做这样的事情:

@pricepackage = @price[:price1] + @price[:price2] + @price[:price3] + 500

请解释你的答案,我想知道为什么而不仅仅是如何。 =)

3 个答案:

答案 0 :(得分:7)

你可以这样做:

@price.values.map(&:to_i).inject(0, &:+)

编辑:添加说明

所以@ price.values返回一个收集哈希值的所有值的数组。那就是["1", "12", "4"]。然后.map(&:to_i)to_i应用于此数组的每个元素,从而获得[1,12,4]。最后.inject(0,&:+) preforms注入初始值0并使用函数+进行累加,因此它在最后一步中对数组的所有元素求和。

答案 1 :(得分:2)

如果您的数据集如下所示:

prices = {price1: 100, price2: 100, price3: 50}

然后这将总结值:

prices.values.inject(0) {|total, v| total += v}

答案 2 :(得分:1)

保持简单

@prices = ....
@price = 0.0

@prices.each do |p|
   @price += p
end