Swift中 高阶函数reduce解析

Swift 引入了一些高阶函数,比如mapfilterreduce,今天简单介绍一下reduce的用法.

reduce用于做序列元素的累加,如数组元素的累加。

/// initialResult: Result 初始值;
/// nextPartialResult:(Result, Int) 下一轮计算值, Result = initialResult + Int
/// Result是每轮计算的返回值(结果), Int 是数组元素
/// -> Result 返回值
 sortArr.reduce(initialResult: Result, nextPartialResult: (Result, Int) throws -> Result(Result, Int) throws -> Result>)

举个例子

var aarray = [1, 2, 3, 4, 5, 6, 7, 8]

 let reduceArr = aarray.reduce(0) { (result, item) -> Int in
          
 print("result:\(result) item:\(item), \(result+item)")

    return result + item
 }
 print("reduce:\(reduceArr)")

输出结果

init:0 item:1, result:1
init:1 item:1, result:2
init:2 item:2, result:4
init:4 item:3, result:7
init:7 item:4, result:11
init:11 item:5, result:16
init:16 item:6, result:22
init:22 item:7, result:29
init:29 item:8, result:37

reduce:37

如果把初始值换成100, 结果是这样的

var aarray = [1, 2, 3, 4, 5, 6, 7, 8]

 let reduceArr = aarray.reduce(100) { (result, item) -> Int in
          
 print("result:\(result) item:\(item), \(result+item)")

    return result + item
 }
 print("reduce:\(reduceArr)")

输出结果

init:100 item:1, result:101
init:101 item:1, result:102
init:102 item:2, result:104
init:104 item:3, result:107
init:107 item:4, result:111
init:111 item:5, result:116
init:116 item:6, result:122
init:122 item:7, result:129
init:129 item:8, result:137

reduce:137

如果有兴趣,自己敲几行代码验证一下吧_

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。