繁体   English   中英

如何用reduce方法改善这个总和

[英]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']}

这两个表达式是等价的, summap / 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM