刘老师你好
liu老师和学友你们好, 请问一下:本章节里的 reduce 函数 是 第一次介绍吗 还是在以前的章节里有介绍,如果 以前的章节里有介绍过 请问是那一章节? 若果没有介绍》 本章节的reduce 没有听懂 请详细 讲解一下 谢谢
liu老师和学友你们好, 请问一下:本章节里的 reduce 函数 是 第一次介绍吗 还是在以前的章节里有介绍,如果 以前的章节里有介绍过 请问是那一章节? 若果没有介绍》 本章节的reduce 没有听懂 请详细 讲解一下 谢谢
2016-09-26
reduce是三大面向函数编程函数之一,其他两个是map(转换信息)和filer(过滤信息)
num.reduce函数中有两个参数(initialResult : Result , nextPartialResult : (Result , xxx) throws -> Result)
可以看到第一个参数是用来做初始值的,第二个参数是要求传入的是一个函数或闭包(其中的参数一个是Result即reduce里面的第一个参数,第二个值是你数组里面的值(xxx是指这个值的类型))
可以看出 这个reduce函数通过把你传入的初始值放进你传入的函数或闭包进行多次逻辑操作,返回的值是reduce里面的第一个参数。 有点像 let a = 0 ; a += 1 ; a进去跟1进行操作,结果重新赋值给a
假设有个数组[1,2,3,4] 你.reduce(0, { return $0+$1 }) 结果是 10 . 这里的$0是指闭包里面第一个参数, $1是第二个参数 , 这里进行的操作是 0+1->1(result) 1+2->3(result) 3+3->6(result) 6+4->10(result)进行了四次操作,因为数组里面有四个元素,他们要依次跟$0进行操作。
当然不止上面这种累加操作啦 你也可以做累减reduce(10 , {return $0-$1}) 结果是0
老师那种就是取出最大值,他把reduce里面的第一个参数变成num[0],不再是自己放个默认进去与数组进行操作
逻辑就是 num[0] 对比 num[0] num[0] 对比 num[1] num[0] 对比 num[2] 其中的对比如果左边比右边小,就把右边值赋给左边 相信不难实现吧 希望这个解释能看懂?
举报