00:00
那么我们将在本节当中为大家讲授函数的最后两个内容哈,是什么呢?偏函数以及我们的拉姆达表达式,首先呢,先为大家介绍一下拉姆达表达式行不行?来右键新建一个普通的文本文件啊,Lambda拉姆达表达式,然后拉姆达表达式它也有另外一个名字啊,什么名字呢?叫做匿名函数,就看你在什么语言中理解这个东西啊,所以我们看一下lambda拉姆达表达式,什么叫拉姆达表达式呢?它是注意是函数的另外一种表示方式而已啊,一种表示方式而已,所以说本质上还是一个函数啊,还是一个函数,只不过是它用什么格式,用一个表,用一个表达式格式来表示的一个函数啊,很多说这啥意思啊,不明白,浩哥,好了,我们来看一下,首先我们正常的教大家书写一个函数,来右键新建一个P。
01:00
份文件MY下限扣的四,下限16,好,我们在这里边定义一个函数啊,非常简单的一个函数,定义一个什么呢?求和的函数,哎,那我们跟着some来做实验好不好?那咱这定义的时候,DEF叫它get some,获取和,然后在里边传入两个数,两个参数行不行?NUMBER1,逗号NUMBER2,然后同时在里边进行一个操作,把一和二的数值进行一个相加,加起来之后呢,我们来干什么事呢?返回这个运算的结果,这样一来的话,我们就定义了一个求和函数,有没有问题呢?完全没有问题,我们在里边可以正常的调用这个函数,那调用函数的时候来get some呗,是不是?然后我们传两个数,传一个五乘一个九九加五是不是四,我们可以在这里边什么呀?写一个变量来接收一下啊,变量来接收一下结果来我们打印这个变量。VR大家会发现它的运算结果是什么呢?是14,这就是我们之前学的一个函数,对不对?好,但是函数也可以用另外一种格式来表示,就是拉姆达表达式,什么意思呢?大家都看过变形金刚没有啊,变形金刚没有好变形金刚大家都知道变形金刚实际上是有两种状态的,是不是?一种是人形状态,人形状态就变成一个人的样子啊,有胳膊有腿是不是一种是什么呢?汽车状态吧,是不是汽车状态,那我们的拉姆达表达式和函数就可以用这个来理解,如果把函数比作是什么呢?人形状态的话,变形金刚的话,那么我们的lambda拉姆达表达式啊,表达式就是一个汽车形态的变形金刚,简单的说,它的本质上都是变常金刚本身是不是,但是由于形态不同,所以它们的什么呢?使用方式啊,或者有一定的功能会有所不同,那在这里边我们刚刚已经交到。
02:55
大家写,已经给大家写了一个普通的什么呀,函数版本是不是呀?那很多同学说,那我要把它写成拉姆达表达式,能写吗?可以,请注意拉姆达表达式的格式,来教大家格式啊格式对于拉姆达表达式来说,它的格式还比较简单,首先呢,由于拉姆达表达式是以表达式的格式存在的,所以它需要生明一个变量啊变量,比如说咱这写一个什么呢?叫做变量名啊,变量名自定义就可以了,然后等于等于什么呢?后面写上lambda,这是关键字,必须要写。然后也就是说,哦,原来拉姆达后面就要写东西了,写什么东西呢?你函数不是有参数吗?可以,参数在这个位置写,有多少个参数都可以,用逗号分割开就OK。然后干什么事呢?后面跟一个冒号,后面跟一个冒号,冒号后面写什么呢?写函数的功能内容或叫函数的代码体啊,函数的代码啊,函数是叫实。
03:55
实现函数功能的代码,实现函数功能的代码即可啊代码就可以了,这就是拉姆达表达式的格式,来我们来看一下,我们把它转,把刚刚写的这个函数转换成拉姆达表达式格式式好不好?OK,那把这个注释掉啊,这是一个函数形态啊,函数形态就我们刚刚说的什么呀,人形态对不对,人形态的变形金刚,然后呢,把它变成拉姆达表达式,其实非常简单啊,你只要按照格式把它的位什么呀,相对应的这个成分进行一下转化就可以了。首先啊,我们在里边定一个ABDA拉姆达表达式,那它是一个是不是相当于一个汽车形态的变量金刚啊,是不是好写呗,那咱说首先需要生为一个变量,变量名,你随便定义就是这一个变量名会成为你未来的函数名,它叫拉达表达设名,所以就叫get sum行不行?或者叫get sum2啊,随你便啊,然后等号写上,然后写上labda lada表达式,然后写参数原来的函数里边。
04:55
是不是有NUMBER1和number俩参数可以,我就把这两个参数放这NUMBER1,逗号NUMBER2,然后呢,后面跟冒号,冒号后边是不是需要写什么呀?写函数的整体内容就是实现函数功能内容是不是在这里边,也就说把两个数相加得到的结果,然后返回来就可以了,是不是?那我们在这里边怎么写呢?直接一加上二即可,大家心里有疑问说不用写不需要啊,所以这里边需要注意啊,Labda拉表达式啊。
05:24
表达式姿态return,也就说你只要写个拉姆达表达式的话,它就相当于这里边已经写了return了,明白了吗?好了,这样一来的话,拉姆达表达式就好写完了,就是写了一个好多,这是个函数吗?这不是一个等号负值吗?没错,这确实一个等号负值,所以叫表达式嘛,是不是,但是它是一个函数的变形,所以叫做什么拉姆达表达式,而且本质上就是个函数,很多说这可以当函数用吗?可以啊,来看调用函数没有问题的,调用我们的lambda啊,拉姆达表达式本质上就是函数嘛,是不是?那你调用函数怎么调用它就怎么调用,在这里边需要注意的是它的变量名充当了函数名,所以你要调用的时候就这样GET32000套上括号传俩数,比如说乘以33乘个55,那么它得到的结果我们一元可以拿变量来接收,并且打印出来它的预算结果,那33加55应该是几?是不是88呀?来右键运行一下,OK,看到没有结果是88,这就完成了一个拉姆达表。
06:24
达式的什么呀,书写,所以写拉姆达表达式和写函数本质上是一样的,只不过是格式上稍微有些差异啊,那当然拉姆达表达式和函数它不可能完全一样,这个从我们的什么呀,从我们的这变向金刚就可以看得出来,什么情况呢?如果是一个人形态的变相金刚的话,那它功能就多了,是可以跑啊,可以跳啊,可以什么呀,说话呀,当然这个也可以什么呀,也可以唱歌,是不是可以发射导弹啊,是不是可以攻击呀,是不是很多很多的功能,也就说它如果是人形态的话,它的功能是很丰富的啊,功能是很丰富的。
07:00
功能丰富,但是大家如果想啊,如果说变形金刚变成了个汽车的样子,那这个时候它的功能就很少了,是不是啊,除了能跑能说话之外,好像啥也干不了吧,是不是再就能变形是不是?所以它的功能就简单啊,功能就简单,这也是拉姆达表达式的一个限制所在,也就是说拉姆达表达式虽然是函数,但是它不能完整的代替函数,因为它的功能只能写一些简单的,而不能写一些复杂的,比如说我想写循环,不要想写不了,我要想多项分支,不要想,依然写不了啊。当然拉姆达表达式也不是什么都写不了,是不是?它主要用于什么呀?简单的数据运算,有时候加减乘除这样的呀,是不是啊?简单的数据运算或者简单的数据过滤都可以实现,当然拉姆达表达式这里边能够使用的分支。能够使用的,循这个流程控制啊,注意一点,它不能使用循环,只能使用分支,而且只能使用一种分支,就是双向分支啊,双向分支所以我给大家写一下它的注意事项啊,解释里边吧,注意啊。
08:04
好,选上注意来,注意什么事项呢?Mab DA,拉姆达表达式的功能啊,功能较为单一,较为比较单一,比较单一啊,只能实现简单的数据运算,简单的数据运算。运算或者是判断啊,或者判断它无法使用循环,无法使用循环,或者复杂的操作啊,复杂的操作,因为拉姆达表达式语跟有一个硬伤什么呢?它既然是表达式,就得写在一行里边是不是,所以这根本就一行多了写不了,所以你想写那些复杂的循环呀,什么流程控制语句啊,很难在这里边写成的,来我们接下来看,那下面教大家写一个什么呢?带有分支结构,当lab DA lab DA,拉姆的表达式好不好,表达式好,那么这个时候我们来看一下它有分支的该怎么写,比如说我们写一个非常简单的,根据用户输入的这个性别啊,比如说输入一个男,我就给他返回一个英文单词,输一个女,就返回woman行不行?好,就这么一个小功能,如果写普通话来说的话,我相信大家都会写,对不对?Get six啊,换取性别。
09:25
我们要传入一个什么呀,传入一个字符对不对,传入一个文字吧,叫做这个文字,怎么英文单词我也不会写啊,文字字字符写一个,传一个six吧,行不行,传一个性别进来,然后呢,我们根据性别是什么,男还是女,返回这个men或者woman美行不行啊,检测性别,你看好了检测性别。检测性别,返回单词好吧,返回单词在里边if。如果X它等于等于男。
10:03
那我就给他retain一个什么呢?Man单词啊,英文单词卖回去,Else,只要不是男,那就是else法规女EL啊,Else SE,我们就return一个woman行不行,Woman woman好,就这么简单的一个函数,那现在这个函数如果要调用的话,哎,没什么难度吧,调用函数好,我们get six。然后再传一个字符串,比如说我们传一个难字进去,好吧,传一个难字进去,那么毫无疑问,我们最大的最后的这个结果变量里边接收的一定是一个慢吧,是不是弹框,我们打印一下结果,Result。RUT收到的结果是什么呢?来运行一遍说什么呀啊发过来我写一个女。是不是就返回五美,或者写个别的字,其实返回的都是五美啊,来右键返回的是五美是不是好,那像这种带有双向分支的,我们用拉到表的是是可以实现的,所以把它注释掉,带着大家看一下,如果我用双向分支实现它的该怎么写,这个格式比较奇怪,所以请大家注意啊,来带有分支的啊,给大家写一下这个格式啊,因为要记一下。
11:12
好。带有分支的格式啊,带有分支的格式的格式。啊,当有分支的拉达表达格式E是变量名开头,这个不变啊,变量名开头,然后等于MBDA,这个也不变,然后如果有参数你就往里写啊,参数一参数二啊,你有几个你就写几个,用逗号分割开就可以了,后面写上冒号,冒号后边就需要注意了,什么东西呢?它需要把你,因为你是要做分支嘛,所以一个是真区间,一个是假区间的返回值,对不对,你需要把真值放在前面啊,前面放的是真值。真值也就是你后面判断条件为真的时候的值,最后放什么呢?假值就是判断条件为假的时候的值,那多时候判断条件放哪呀?看好了,判断条件放这,写上if,然后呢,写上条件表达式空格,直接写else就可以了,你不需要换行了,因为你也换不了行,不需要加冒号了,因为你换不了行,就这么简单,所以这带分支的格式,来我们来写一下看行不行?好吧,打开第16个文件,在这里边首先get six2啊,等于lab DA啊,冒号,由于参数只有一个,写个six行不行?然它在这里边需要把条判断条件为真的值放在前面,那咱判断条件为真的值是不是难的时候返回的men啊,所以你就把men放在这里就可以了,不用写自带对不对?然后呢,把woman放在最后啊,Woman放在最后,WMN放在最后,那这个时候中间放判断条件,也就是F,我们的six等于等于字符串男,然后else它。
12:48
了吗?A,这样就写完了,也就说你传一个什么呀字符串,它会在这里判断,判断为真的时候,把前面这个值什么呀,返回给你,判断为false,把后面这个值返回给你来,我们看一下能不能用呢,调用函数。
13:04
调用函数好,那在这里边我们result等于get six2套上括号,然后在这里干什么事呢?在这里边直接写传入一个字符串,比如说我传一个难进去行不行?来我们来看一下最后我们的result变量接收的结果是什么?嗯,Result。来右键运行一遍。看见没有收麦,然后当我在这里边传一个女的时候,它返回的就是乌了啊,来右键变形一遍,返回的是不是就乌了啊,这就是带有分支的一个是么呀,拉姆达表达式就这样就可以了,这也算是比较复杂的拉姆达表达式了啊,比较复杂拉姆达表式,然后没有然后了,我们在拉姆达表达式就介绍完了,当然如果你希望在什么呀,在拉姆达表达式里不是写判断啊,也不是写运算,我说我调用其他函数行不行,当然可以,只要在一行里面,那它就没有问题,因为拉姆达表达式并没有做其他的限制是不是?所以你要是在函数里面调用其他函数本身就可以吧,那比如说我写一个最简单的好不好?比如说我们写一个在labd拉姆达表达式中调用其他的函数,这个是绝对可以做到的啊,比如说我们给大家写个什么呢?给大家写一个获取类型的一个函数,行不行,直接获取数据类型的函数啊。
14:21
叫做好老师,这个还用写吗?来来写获取并且打印数据类型的函数,如果以前写的话是不是比较麻烦,咱们怎么写啊?Print套上括号,里边写type号套上括号,然后再写数据,是不是这么写啊?那咱这次一步搞定啊,直接生为一个函数叫做print什么呢?Type,打印函数,打印类型行不行?然后怎么写呢?A,要不BDA拉达表示你需不要传一个数据好给你检测啊,需要啊,所以我写个VR当录参数,也就是行参,然后在这里干什么事呢?调用函数呗,调用to框,Print type。TYP是不是连续调了两个函数了,把VR往里一传就可以了,这个意思就是哦,我接收到了VR,我会在在这里边进行一个操作,操作完之后直接打印出来,简单说你就写一个是吧就行,过程函数好,那么返回啥了?返回那个now,因为print没有结果嘛,所以返回那也不影响我们使用,来看一下来。
15:18
调用函数。好,来呗,Print type函数,我直接写个15,大家一看就知道什么玩意,这是不是整形啊,没问题,右键运行一下。好,整形就出来,看到没有直接告诉你是一个整形,我要打印一个什么呢?我要打一个字符串,叭如说小明是不是小明,它立刻就告诉你,我的数据类型是小明。看见了吗?所以在我们的拉姆达表达式中也是可以调用函数的啊,不过需要注意啊,拉姆达表达式它一般在做什么呀?在做大功能函数的时候它不适用啊叭,如说我要写一个什么上面的功能,什么实十列星星,这些东西对于我们什么呀,拉姆拉表呢,是并不适用啊,那很多说啥适用呢?数据过滤的时候就比较适用了,假如说我现在什么呀,有很多很多的人的信息,我要过滤出来什么呢?身份证号是X的人,那这个时候我就可以什么呀,我就可以使用拉姆达表式对这些数据进行一个处理了,就比较方便。所以拉姆达表达式主要用于数据处理,而不是用于什么,而不是用于我们写函数功能啊。
我来说两句