00:00
好,来吧,我们上午呢,已然讲到了,对我们把。我们把这个幻灯片还有我们的笔记先打开一下。好,上午呢,我们讲到这儿了,就是函数的细节,我们讲到了这个位置,讲到第12个对吧?好,我们把相应的笔记呢,也给大家打开。好,我们接着来看。啊,大家看啊,我这个文档手册呢,大家以后可以利用一下,就是每次讲完以后,当我们这边目录生成的时候呢,你可以在这边大家看这边的目录也会相应的生成。相应生成,然后呢,呃,你看这现在只有生成到D,呃多重循环,你怎么办呢?你把这个更新一下这个域。你更新一下整个目录下面这些就全部生成了,然后呢,你可以呃,想看哪一个可以按CTRL加一个呃,按一下这个按钮,按一下这个鼠标也能定位啊,这样会比较方便一点。
01:04
好,我就继续走。把这个拉到最下面吧。这。好,我们来看一下下一个需要大家了解的12,呃12呢,我们说的是这个递归啊,递归要明确的指定这个类型啊,这个已经是在前面说过了,接着往下走,第13个,那么scan呢,它还支持这个可变参数,可变参数同学们在后面会用的也会用,用得到哈,就是在Java里边呢,老师也讲过,可变参数也是支持的,那可变参数几乎所有的编程语言都支持什么,什么时候可能用得到呢?这个时候比如说当我们一个函数或者是一个方法,注意啊,我刚才讲了,只要你没有涉及到这个,呃,编程的范式方法和函数,呃是一个意思。那你就说当我们一个方法或者一个函数,它的参数个数不确定的时候呢,你可以使用可变参数,比如我们想支持一个零到多的一个参数,那怎么办呢?那这个前面写上这个行参的名称,注意行参名称随意写,那后面呢,写上的类型加一个星号就可以了。
02:19
那如果你要支持一到多个呢,那先写一个,后面呢再写这个就是可变参数,既然可以写一个,当然也可以写两个,还有一点我们这个可变参数。啊,不能写在前边,你可变函数一可变参数一定是出现在形参列表里面的,最后这点跟Java的机制是一样的,因为编译器它在进行编译器在进行处理的时候,如果你把这一个可变参数写在最前面,它无法确定你这个可变参数到什么时候结束。哎,所以说他要求我们的可变形参,就可变参数必须写在最后,那么我们来举个例子,好,我们来举例子,比如说比如说当我们有这么一个案例的时候,编写一个函数上可以计算出一到多个int的和,那么我们来看这个案例啊,同学们,OK,我们来看一下可变参数就写到这里。
03:16
可变参数,那么走一个案例啊,比如说可变我写一个VAR啊,Parameter parameters。好,我们来走一个小案例。那么我们就以刚才这个案例呢为这个切入点来讲解。刚才我们要需要完成的是演示一个呃上函数,然后呢,求一到多个,那怎么办呢?好的,我们DF上。呃,既然它要有一个,所以我们先写写写清楚一个,比如对吧,然后呢,后面呃个数不能确定,那怎么办呢?咱们写个argue,然后呢,一个冒号,注意呃行参的名称和类型之间要用冒号隔开,那这面我们就写int。
04:05
Int心。好,这边返回的类型,返回的值呢,我们是int类型。这就写完了,那么我们看看怎么算呢?同学们,我们先看一下,对于一个可变参数,它的这个类型是什么啊,我们来看一下啊看。它其实是一个序列,它其实是一个序列,叫sequence,这个中括号里面是它的泛型。泛型那什么意思呢?就是说如果你这写的是int,它的类型就是int,如果你是float或者string,你看如果你是个string,我们再来看argue是什么呢?它里面的这个泛型就变成十罪了,后面关于这个泛型,我们后面还要想讲啊,就说它是一个序列,什么序列呢?序列就是一个集合啊,一就是在我们Java里面呢,序列是一种,是一个集合的一种。后面我们还会说这个事,那现在我们来演示一下它的便例,好,先看一个小案例啊,我们打印出这个argues的长度,它这个有多少个N,加一下argues.N。
05:15
好,这是第一个,如何便利呢?便利啊,我们现在开始这样写一个啊,比如说呃,现在呢,我有这么一个,呃一个题上传一个十,后面才传30,十再传三,再传四,再传一个啊67啊七看这个怎么算哈,首先呢,要求这个和嘛,要求和的话呢,我先定义一个一个变量上。啊,就是它的和默认给它一个零。默认一个,给他一个零,过后呢,我便历变历,我们用的是for循环,For循环有点类似于呃,就是它可以从一到多少,也可以直接对一个集合进行电立,不管你这个集合是序列还是一个map,还是一个其他的什么都可以啊,都可以,包括你是数组都可以,那么我们就直接取出来item,取出一个怎么遍历呢?Argue。
06:12
好呃,现在呢,我们就把它算出来就可以了,大家看你从这个呃序列里面取出来的呢,每一个都是int,所以你看我这写一下看里面就已经是int了。这个大家应该能够看得到,好好现在呢,我就把它累积一下,加等于it最后将其返回就可以了,好,我们来看下这个结果对不对,运行一小把啊,运行一把,我们可以看到这个结果呢,跟我们想的应该是对的啊,可以看到结果跟我们想的是一样的。对吧,九十五一共有五个元素传进来了啊,当然排除了第一个,你排除一个嘛,因为你这统计的时候只能统计到后面这几个再加起来这就OK,那这个刚才这个结果算的是错的,那这个初始值咱应该写成N1。啊,这样才是正确的,就是第一个值,呃,先预先付给我们的上,然后其他的呃,序列里面的就是可变参数里面值再进行一个便例加就OK了,好,这是我们这个案例啊,那么关于这里面有个细节,我多说一句,好,我们在这加一个细节,说到这里啊。
07:21
就是可变形参,它只能放在我们参数列表的最后。这个我忘了写了可变可变参数,可变参数需要写在。写在写在什么呢?写在含行参列表的行参列表的最后,你比如说你比如说我把这个顺序顺序颠倒一下,大家看这个代码呢就不行了,比如说我写一个SUM2。我随便来写一个啊,我把这个argue也拿过来,我省省点事啊,同学们,我把这个拿过来用一下。用一下我就语法通过就行了,看这个语法是没问题的,我把这个颠倒一下顺序,我把可变形参写到这,可变形三写到这是可以的,因为呃这个相当于说是零到多个,那我把。
08:13
这个写到这好,我们可以看到这个语法就出错了啊,他已经写的很清错了,他说这个可变参数must come must,那那时最后嘛,对吧,他说的很清晰,所以这样大家注意一下,就是可变形参要放在最后,知道这个细节啊,就是可变可变参数需要放在最后。好可以了,那下面呢,这个我把它注销一下。好,同学们,我把这个呢给大家板书一下,刚才我们讲的就是scanner它的可变,可变参数的一个使用,可变参数的使用好的。把它拿过来。把它拿到这是我们的基本语法,基本语法的说明对吧,基本语法的说明,然后呢,我把这个基本语法给大家放在我们的这个位置,大家一看就清晰了,然后呢,这里面我们我们说了它的一个注意事项,它使用的诶使用的注意啊注意事项。
09:21
好,我先退出一下啊,使用的注意事项是哪里呢?我这里总结了三点。对吧,三点给大家板述一下,就这哎,就这么一个,呃,三个地方需要大家了解的。来写一个小标号。啊写一下比较好,然后呢,我们这有一个案例应用案例也写到这来应用。应应用案例案例,好的,把应用案例给同学们放到这就可以了。好,放到这里。好,同学们,关于可变形可变参数我们就讲这么多,那么呃,我们现在呢,来做一个题啊,我们来做一个题,看看大家能够把这个做出来吗?看这里,我这儿有一个组。
10:11
我这里有一个主函数,然后呢,这里D f1,大家看这里什么意思,能看懂吗?我写了一个函数叫F1 f1,然后呢,有个等,后面直接写了一个字符串vea是什么意思呢?其实呃,然后我去print l f fe,大家知道是什么,这是什么意思啊啊,我跟大家说一下,大家一下就清楚了,注意这句话其实它是定义了一个函数。这句话。等价于,它等价于下面的写法,等价于什么写法呢?在我们这个呃,SC开发里面经常会看到这种类似的一个简写,它是等价于这个写法的,它是DEF1小括号等于这个里面返回的一个vea。
11:08
大家看看就这意思,但是因为因为你这个函数题里边只有一句话,所以这个大括号可以去掉。可以去掉,于是他就可以变成这个样子。又因为刚才我们讲过,如果没有行参,没有一,一个形参都没有,可以把小括号去掉,就变成这个样子了。所以说呢,在我们开发中,你你如果看到这个,你千万不要认为呃,它是一个变量啊,其实它本质是一个函数啊,啊,当然你你说要是看成变量,好像好像也也可以是吧,好像把一个字符串给他嘛,但本质呢,它其实是一个函数,大家知道这个就可以了,所以说最后这个输出的结果呢,就是。啊,就知道这里面了啊,这个其实等价于就是刚才我写的这个好可能复原。这个大家以后要看得懂哈。
12:01
如果看到这种这种语法大家能够看懂,好了,同学们,那么这个函数的练习题呢,我们也就说到这里,给大家板述一下,这是我们写了一个非常简单的函数练习题,对,我把它放到这里来。好,我把它放在这里,就这一个玩意儿。好的。好,这是我们的一个练习题。好,我把它放到这儿。好,同学们,那关于这个函数的这个细节这一部分呢,我们就全部说完了,截取一段视频。
我来说两句