我想使用reduce
方法来改进这个求和,但是我发现它适用于求和,但也需要进行减法操作:
final = 0
@status.each do |data|
final = final + data['pending_increase'] - data['pending_decrease']
end
我想要使用的方法是
Enumerable#reduce
。我想使用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, :+)
sum
使用 inject
,也叫做 reduce
。 - Stefan@status.map{|data| data['pending_increase'] - data['pending_decrease']}.sum
@status.map { |data| data['pending_increase'] - data['pending_decrease'] }.reduce(:+)
但这样做的缺点是会创建一个临时数组。
只是说一下。
+
代替+=
。 - Stefan