簡體   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