我有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
答案 0 :(得分:5)
也许使用常见的“地图”和“减少”功能更清楚?
taxes.map { |t| t[:rate] }.reduce(:+) # => 3.0