1

在 ruby​​ 中求和哈希值的最佳方法是什么:

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

我现在做这样的事情:

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

请解释您的答案,我想了解原因,而不仅仅是如何。=)

4

3 回答 3

7

你可以做:

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

编辑:添加解释

所以@price.values 返回一个数组,该数组收集散列的所有值。比如说["1", "12", "4"]。然后.map(&:to_i)应用于to_i这个数组的每个元素,因此你得到[1,12,4]. 最后.inject(0,&:+)preform 注入初始值为 0 并使用函数进行累加+,因此它在最后一步中对数组的所有元素求和。

于 2013-01-30T17:10:43.310 回答
2

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

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

那么这将对值求和:

prices.values.inject(0) {|total, v| total += v}
于 2013-01-30T17:13:37.963 回答
1

把事情简单化

@prices = ....
@price = 0.0

@prices.each do |p|
   @price += p
end
于 2013-01-30T17:14:24.650 回答