温馨提示:文本由机器自动转译,部分词句存在误差,以视频为准
00:00
同学们啊,我相信同学们听到现在呢,感觉好像对videos left你理解了,其实你还没有真正理解,同学们根据我这个授课经验啊,其实大家还没有真正理解到这个,到底它这个什么叫把第一个结果返回给第一个参数,因为这个参数如果是个引用的话,它其实是可以不停的往这边来进行化的,那么我们先看一下这个流程是这样子的啊,看这个图。那这个图呢?这个图,这是刚才描述了12345的一个,呃,就是那个求和的一个过程,其实它是这样子,先从前提是呃,Reduce啊,传递前提是reduce,它是从左边开始。化简一加二传给这个值,然后再把这个结构值再跟三进行继续调这个sum,拿到这个值后再跟四进行这个求和再化简,然后把这个求和再化简,因此他最后这个流程是这样子走的,那这个有什么实际价值吗?很有价值,你比如说将来我们想去求。一系列的这个,比如我有个集合特别数据特别多,那我要求其中的什么呢?我要求其中的最小的数。
01:08
我让你们想一想,如果我把这个交给你们,你们能做吗?其实其其实挺难的,说老师这个挺挺容易的,你写一个看看啊,我给我这里有,我这里有有有100个数,我我要求你们找出最小的数,其实你们可以写个函数是吧,可能便利那个小,然后写一堆这个代码,是不是肯定要写一堆代码吗。而且你们肯定一般不会用递归的方式来解决,如果我们有了这个reduce,是不是你写个函数,就说比较哪个大或者哪个小返回,然后一调是不是结果就出来了啊,非常有价值,不能说这个时候好像讲的这个没用,特别有用啊,特别的有用,只是你现在还没有感觉到好,这个呢是我们讲了下reduce是left的一个执行流程,那么这个reduce left呢,我写了这个东西,我先暂时不讲这个地方呢,就说reduce left的,我们在接受一个高阶函数的时候呢,除了传一个函数,也可以直接写一个匿名函数传。那这个呢,我就放在后面再说啊,放在后面再说啊,这个是什么意思呢?这个radio是left呢,也也可以直接就说这我写的这个东西就代表将来你们可能看到更多的用法是什么呢?是这样写的,就是我们将来这个地方可能不是传一个函数名,而是直接写了一个匿名函数传进去。
02:22
就有点类似于你们在学Java的时候,老师讲的,我们在接受传一个对象的时候,我们可以直接溜一个匿名对象传进去,是不是啊,一样的道理,只是我这个先暂时不讲,因为后面我们有个呃,函数式编程专门说这个事儿啊,就说大家先有这个印象啊,就什么印象呢,将来就是在接收。接收一个函数时,函数时也可以直接啊,也可以直接传入一个匿名函数,也可以直接传入,传入一个匿名函数一样可以用。啊,这是它的一种语法的一种规则,就类似于你们学Java的时候,老师说传一个对象也可以直接传一个匿名对象一样的道理,好OK,那讲到这呢,我们继续把这个reduce这个执行流程就说了,那还有一个呢,叫reduce right。
03:13
就是它这个是从右开始化简,那从右化简唯一不一样的地方就是它整个这个流程是反过来从右边开始化。那么我们来看一下这个又化简的一个题,我们直接上一个练习啊,上一个练习帮助大家理解,来同学们看一下。好,现在呢,嗯,我我。
我来说两句