[英]How can I improve this sum with reduce method
我想使用reduce
方法改进这个总和,但是我看到它适用于求和,但我还要做一个减法:
final = 0
@status.each do |data|
final = final + data['pending_increase'] - data['pending_decrease']
end
我想要使用的方法是Enumerable#reduce
像这样的东西:
@status.reduce(0){|sum, data| sum + data['pending_increase'] - data['pending_decrease']}
要么
@status.map{|data| data['pending_increase'] - data['pending_decrease']}.reduce(0, :+)
这也会起作用(因为初始种子为0
),但不会按要求使用reduce
@status.sum{|data| data['pending_increase'] - data['pending_decrease']}
这两个表达式是等价的, sum
比map
/ reduce
更短更简单
enum.sum{...} == enum.map{...}.reduce(0, :+)
如果这是在rails应用程序中,您可以这样做:
@status.map{|data| data['pending_increase'] - data['pending_decrease']}.sum
您可以先计算差异,然后将它们相加:
@status.map { |data| data['pending_increase'] - data['pending_decrease'] }.reduce(:+)
但这有一个缺点,就是创建一个临时数组。
只是在说'。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.