【发布时间】:2013-02-02 05:23:51
【问题描述】:
我需要对数组哈希中的值求和,我找到了一种方法来做到这一点here
但在 Ruby 中似乎应该有一种更优雅的方式。
这是有效的;
sales = [{"sale_price"=>210000, "deed_type"=>"Warranty Deed"}, {"sale_price"=>268300, "deed_type"=>"Warranty Deed Joint"}]
total_sales = sales.inject(0) {|sum, hash| sum + hash["sale_price"]}
总计行不是很可读。如果这样的事情能奏效就好了;
total_sales = sales.sum("sale_price")
这只是一厢情愿还是我忽略了更好的解决方案?
【问题讨论】:
-
这是正确的做法。你可以做的粗略方式: sum = 0;sales.each{|x| sum=sum+x["sale_price"]};sum
-
感谢 Tin Man 的提示,我不知道代码审查网站。
-
“如果这样的事情能奏效就好了”。这是 Ruby,添加您想要的
Enumerable#sum并解决问题。也许你应该称它为Enumerable#hash_sum,但Ruby 是一种OOP 语言,sum应该是调用方法。
标签: ruby-on-rails ruby