00:00
那么下一个要给大家讲解的是什么呢?叫扫描啊,Scan扫描,那这个扫描它是一个什么意思呢?先做一个基本介绍,扫描即对某个集合的所有元素做for的操作,它仍然是折叠操作,但是它跟折叠不一样的是,它会把产生的所有中间的结果放在一个集合中保存,也就是说它会把整个这个结结果扫描整个折叠的整个结果给你保存起来。放到一个集合返回,那把整个流程给你展现出来了,这个呢后面也很有用,那这样子啊呃,因为我们折叠已经讲的很清楚了,那这个扫描案例我就直接拿过来用一下就完事了,我就直接给你们讲一下它的执行过程。好。我新建一个文件夹SC。SC,然后DEMO01。好,同学们,我写一个object,写一个组方算好,我在这里写成代码。那么我们看一下就可以了啊,非常的简单,这个函数就不说了,这就是一个普通的函数啊,普通函数。
01:06
相当于相当于这个就OK了,大家看在这里呢,我没有写这个list史的,我就直接写个1TO5,当然你也你愿你愿意的话也写个list的里面写一到五也行啊,只要这边是集合,咱们就可以用sc left,那么这个scan left它会这些代码我先暂时不看。这些代码我先暂时注销,大家先不看它,我们就只看这一节代码1TO5,只看left的五,这个代表什么意思呢?同学们啊,1TO5大家应该知道什么意思吧,就是一到五的便利,它是一个集合,然后sc left呢,这个五从左开始扫描,它对应的是左折叠,因此这个五呢,就会相当于放到这儿。啊,有一个五和它进行一个处理,那他怎么扫描呢?注意看这个结果啊,我给他写一遍。第一步。第一个扫描的步骤,它优先先把这个五给你保存起来,注意这个跟左这里稍微有一点的区别是它把第一个元素先保留下来,然后再开始进行这个折叠啊这个步骤呢,呃,跟前面左折叠有一点区别,就在这。
02:19
啊,他先把第一个元素先给你放到这,然后开始进行折叠操作了,那就是五跟一进折叠,折叠的时候是minus,于是这个结果是五减去一个一,就等于四。啊,这个四拿到以后,这个四拿到以后,这个结果呢,再跟我们这个二进行这个处理啊,处理处理这个结果是二减四减去一个二等于二。二减去一个三等于负一,就是说他把每次结果都给你保留起来,负一减去一个四等于负五。啊,负五减去一个五等于负四,其实整个流程都是一样的,唯一区别就是在这,呃,它把第一个先保留到这个时看的返回的集合之中,整个这个返回的I8是个什么类型呢?是一个index sequence,我们看一下是不是这样子的I8。
03:16
是一个索引的一个序列啊,索引的一个序啊,是这样子的,好同学们我们执行一下就可以了,大家看一下结结果啊,并不难,并不难,I8I8等加上I8,好同学们我们执行一下这个结果,看看给我们想的是否一样,好同学们看跟我们分析的完全是一样的啊。完全是一样的,就是这个东西。啊,什么东西好,这个呢,大家一看就清楚,五是啊,跟我们这儿完全一样好,既然是左扫描,咱们明白了,那么向右扫描的道理,其实大家应该也很清楚了,啊,这边是向右扫描,我写了一个新的东西。好,为了演示不同的效果呢,我这又写了一个普通函数叫I,这是一个普通函数。
04:03
大家一看就是求两个数的和并返回,然后呢,这个时候诶对我这还写的左扫描,那这个左扫描就换一个也是一样啊,换一个也是一样啊,这样子我看我这还有没有右向右扫描的。啊,向右扫描。啊,向右扫描没有写,那么就换一个向右扫描吧,换右扫描好这个普通函数,那现在呢,我们向右扫描换一个好同学们那就写个看看有没有向右扫描啊,大家支不支持先手,诶有诶有我们就用一下。好,右向右向右扫描这个用法呢,同学们看到啊,我们同样的道理也给他来一个五好吧,啊,那么我们来分析一下这个流程,那首先呢,同样的道理,它呢,先把这个放到这。哎,因为实先有扫描有一个五嘛,好,我们先看这个结果是什么好,然后我们再分析。好,我们先把这个I9进行一个输出,I9等于下一个看看对不对啊。
05:07
好,首先我们来运行一下这个结果。哦,我看运行一下这个结果。好,这个结果跟我们想的其实也是一样的,那么我们看这个结果它是怎么来的呢?首先先把向右扫描的第一个数先保留在呃右,因为向右上面嘛,好,然后这个五,好,这个开始右上描五加这个五是不是等于十啊,诶这个大家应该理理解,十又作为这个第二个参数放进去,把这边再调一个除出来就变成14,以此类推。啊,这十四十四又跟前面这个三进相加,对吧,17啊十七十七又跟前面这个二相加,就变成了19对不对。19再跟前面这个一相加,就变成了20,好,完全一样啊,这个呃,20啊,就写错了,20,这是20 19 17 14,四和五,这像右扫描,那这个执行的流程跟我们想的一样,唯一要记住一点的区别就是呃扫描呢,他先把你这个数先这个数先保留,然后再开始往里面存东西。
06:14
好,这样子大家理解一下,好,这是我们的扫描的一个基本介绍,那么现在呢,我们来对扫描做一个练习题,那我们看看这个结果是什么,我找一个同学说一下他的结果啊,大家看上这个,呃,这个二二十秒啊看一下。看这结果是什么,一看就出来了,待会我找一个说一下结果这向左扫描的啊各位朋友。好啊,其实是不是特别简单啊,那我们开始写啊,向左扫描是不是先把这个三先保留三写到这吧,啊三就跟后面这个一相乘等于几啊是不是等三三又跟后面这个二相乘是吧,就六六再跟后面三乘以18,好,这个结果是三三六十八,好,这个代码肯定是对的啊,我就不去执行了,肯定是对的啊,如果错了,我中午请你们吃饭啊,啊你们去,你们去运行一下,肯定是对的,好,这个我就不去跑了,好关于扫描呢,这个我们就说到这,我们进行一个板书,好来。
07:18
好,扫描写到这,给同学们放到这执行一下,诶来一个标题二,标题二,然后呢,扫描我们做了一个基本的介绍啊,做了一个应用实例,首先我们做了一个基本介绍,说扫描是什么。扫描是这样子的,来了一个标题二,好,然后呢,这有个应用实例啊,应用实例,那么应用实例呢,我们这有一个按代码,我就直接拿过来用了哈,就是我们刚才讲的这个应用实例放到这里来。好,然后呢,这边我们做完了以后,我们这边做了一个应用案例,对吧,根据刚才我们推导是左边三三乘以一等于三,三乘以二等于六,六乘以三等于18,好,结果是这样子的,好这是一个课堂练习题。
08:12
好的,那么这个课程练习呢,我们也给大家阐述到这里来啊,标题三,好,最后这个结果,包括它的一个说明,我们就截取一段这个图片。好。这是我们的扫描,我们就讲这些,截取一段视频。
我来说两句