美文网首页工作生活
Swift中 高阶函数reduce解析

Swift中 高阶函数reduce解析

作者: Balopy | 来源:发表于2020-05-06 19:11 被阅读0次

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

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

相关文章

网友评论

    本文标题:Swift中 高阶函数reduce解析

    本文链接:https://www.haomeiwen.com/subject/ycakhctx.html