【发布时间】:2016-11-09 01:45:11
【问题描述】:
假设我有一个代码,我想使用高阶函数 reduce() 计算数字的平均值:
var ofAvg = [1,2,3,4,5]
var doAvg = ofAvg.reduce(0) { $0 + $1 }
doAvg/ofAvg.count //This gives me the correct answer which in this case is 3.
但是当我这样做时:
var ofAvg = [1,2,3,4,5]
var doAvg = ofAvg.reduce(0) { ($0 + $1)/ofAvg.count }
我得到的输出为1。我做错了什么?我对reduce() 的理解不是它的实际含义吗?在reduce() 方法之外不必做doAvg/ofAvg.count 就可以获得平均值吗?
【问题讨论】:
-
您在每次迭代中除以计数。
-
只需要除以元素个数一次。