[英]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.