减少Ruby的哈希数组

时间:2014-02-18 21:57:16

标签: ruby generics ruby-2.0

我有array hash个值:

> taxes = [{:name=>"foo", :rate=>0.5}, {:name=>"bar", :rate=>2.5}] 
=> [{:name=>"foo", :rate=>0.5}, {:name=>"bar", :rate=>2.5}] 

这可以总结一下费率:

> taxes.reduce(0) {|sum,element|sum + element[:rate]}
=> 3.0 

还有另一种方法可以做到这一点,可能更容易理解和简洁吗?

**编辑**

为了比较(是的,我意识到这只是一个数组):

>> [1,2,3].reduce(:+)
=> 6

1 个答案:

答案 0 :(得分:5)

也许使用常见的“地图”和“减少”功能更清楚?

taxes.map { |t| t[:rate] }.reduce(:+) # => 3.0