减少一个Ruby哈希数组

减少一个Ruby哈希数组,ruby,generics,ruby-2.0,Ruby,Generics,Ruby 2.0,我有一个数组的散列值: > 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

我有一个
数组
散列
值:

> 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 
有没有其他更容易理解和简洁的方法

**编辑**

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

也许使用普通的“map”和“reduce”函数更清晰

taxes.map{t|t[:rate]}.reduce(:+)#=>3.0
也许使用常见的“映射”和“减少”功能更清晰

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

您的手机出了什么问题?你想要短一点的吗?你喜欢
taxes.collect{| h | h[:rate]}.reduce(0,:+)#=>3.0
?文本不可理解和读者不熟悉是有区别的。函数表示法不仅非常简洁,而且一旦读者熟悉函数概念,就可以成为最容易理解的表示法。@ArupRakshit:
inject
对我来说似乎更糟。@craig在Rails中,你可以使用可枚举的#sum,比如:
taxes.sum{item | item[:rate]}
你得到的东西有什么问题吗?你想要短一点的吗?你喜欢
taxes.collect{| h | h[:rate]}.reduce(0,:+)#=>3.0
?文本不可理解和读者不熟悉是有区别的。函数表示法不仅非常简洁,而且一旦读者熟悉了函数概念,就可以成为最容易理解的表示法。@ArupRakshit:
inject
对我来说似乎更糟。@craig在Rails中,你可以这样使用可枚举的#sum:
taxes.sum{item | item[:rate]}
坦白地说,我觉得这更令人困惑。我看原始版本没有问题。@nzifnab:ya,这个问题是主观的。我认为这个解决方案比较慢,因为它迭代了两次,一次是map,另一次是reduce。我是对的?@Rafa:当然,一个简单的“减少”解决方案是最好的。坦白说,我觉得这更让人困惑。我看原始版本没有问题。@nzifnab:ya,这个问题是主观的。我认为这个解决方案比较慢,因为它迭代了两次,一次是map,另一次是reduce。我是对的?@Rafa:当然,一个简单的“减少”解决方案是最好的。
>> [1,2,3].reduce(:+)
=> 6