00:00
下面呢,给大家介绍一下匿名函数,匿名函数呢,虽然很简单,但它用的特别的多,首先我们看何为匿名函数,听这个名字就知道了,匿名函数就是指没有名字的函数啊,没有名字吗?啊,一般来讲呢,它是通过函数表达式来设置匿名函数,也就是说通过函数表达式来创建或者声明一个匿名函数,那同学们看我这里写了一段代码。Very的简单的一段代码,这段代码呢,你要怎么看?要这样看,先看这一部分。标成蓝色的字体。再看这个等号。再看这个等号,然后再看后面这个变量叫trip。那怎么理解这个东西呢?好,同学们看啊,我给他做了一个说明,看这个位置。这个地方的X就这大块。
01:02
就是我们的匿名函数,就是它整体才叫匿名函数啊,就是蓝色的部分整体才叫一个匿名函数。那么这个X double表示什么意思呢?代表我们这个匿名函数的行参列表。那我这里只有一个,当然将来呢,根据你的需求,你可能还有多个,比如说我还有个Y。啊,Double也是可以的,就这个地方就是你的行参列表。行参列表,那么这个符号很重要。这个符号呢的这边就代表我们的函数题,我们正规通常的函数就是普通的函数呢,一般这方这方写的是等号。注意区分啊,普通的函数一般是前面一个函数名,然后形成列表,等于什么什么什么,那么匿名函数呢,它这个等号就变成了这么一个符号,那么有有些问题出来了,说说老师,那它返回的类型是什么呢?
02:04
注意逆函数返回的类型,我们是通过类型推导来实现的。这点请大家注意,就说你没有必要在这边还去写一个,哦,我告诉你啊,我这个返回值,我返回类型是double OK,你不需要写,你这样这样写呢,没有意义,就你这样写就是代表我返回的这个类型是由这边来推导的。好,那么如果我们的函数体有多个,比如说我这个三乘以X过后呢,我还想输出一个什么东西可以,那么你这里可以写成大括号。大括号,如果有多行,用大括号写,如果有单行,一般来讲就。一句话就搞定了。好,然后这个trip代表什么意思呢?就就代表我这个trip指向匿名函数的一个变量,相当于指向它的一个地址。
03:00
啊,你也可以认为它就是一个,它就是一个函数了。好,那么现在呢?我们来给大家简单的演示一下代码,很简单,我来写一段代码,叫anonymous function。啊。Anonymous anonymousonymous。好,这个是匿名函数,我给大家写案例。好,走一个代码很简单,我们来跑一下啊。首先呢,同学们看到我如果这样写,表示什么意思呢?表示什么意思呢?就表示因为你我我们先看一个,先不要运行它,我们先看这个trip是什么。好,不着急啊,我们先把这个trip打出来,看一下是什么玩意,这个trip,哦,Trip对,它是什么呢?加下叫trip。好,我们先此时此刻,如果我没有传任何参数,我们先看这个时候它会会不会报错,好,我们执行一下。
04:04
好,同学们看到如果你没有传参数,它就是一个变量。他也没有报错,因为我们以前那个普通的那个函数,你如果这样写,他是要报错的,因为你这有参数。这个它不放,你没有参数,他就直接说我告诉你我是一个FUNCTION1,因为你是一个double,那如果我这有两个参数,同学们看到啊,如果我如果我有两个参数。那么这个时候我们再运行呢,我们可以看到它的类型呢,就变成了方程二。OK,好,这样大家注意这个细节,然后呢,怎么调呢,你该传什么参数,你通过这传就行了。那假如我传了一个三,那传了一个三呢,这个整个就等于9.0。没毛病,那同学们,我们预习一下,这个就等于9.0。好,同学们看这效果出来了。那还有一个地方要再次说明啊,同学们,我们这个地方你你不用啊这样去写这个啊,说啊我告诉你,我返回练习册,你写上反而说了。
05:06
逆先生反而说了不要去写,说说这方,我们可以看出来,匿名函数的写法和我们普通函数写法有几大区别呢?我认为区别最大的一个是在于,首先它前面不要写这个东西了,DF的不用写了。不用写了,这是第一个区别,第二个区别呢,就是这个符号含义发生变化,就你原先写的这样写吗。现在呢,这样写。而且呢,不要带返回的,这个情商我做一点说明。啊,对,匿名。匿名函数的一个说明第一点。第一点就是啊,没有必要再写,不不需要啊,不需要写DEF函数名的,这是肯定的,第二点,第二点呢,就是没有必要再去写返回值,让它用类型推导啊,不需要,不需要写返回类型。
06:04
哦,返回类型使用了什么,使用类型推导,类型推导。啊,推导这点注意第三点。等号变成了变变成了什么呢?诶,它变成了这么一个符号,记住了啊,你现在可能觉得很清楚很清楚,用到后面你就容易蒙圈。第四点,如果将来这么有多个多条语句,你应该怎么写呢?你假如我这干完一件事情过后啊,我还想,我还想我在之前我还想做一些其他工作,比如print,先打一句话。先打出这个X等于什么?啊,假如我有这个需求,那这个时候你这样写不合理怎么办呢?换行。你先给我换行来一个大框,大框呢一般写到上边,然后下边再来一句啊,它自动给你换行对吧,你可以这样去处理啊,这个为什么这错了呢。这个地方我看看是为什么错了。
07:03
而必须要分号,不应该不应该啊,为什么还必须要个分号呢?怪啊。这是不是因为我不应该哦?这个不应该哦。鬼这怎么就对了呢?知道为什么吗?刚才我那个一回啊,它它这个比较怪,它是本身回收换行有个型RN,但是你刚才那个出刚才那样写,它其实是直接就有一个直接就就换行了,但是没有没有那个回车,所以说编译器它认为这个是错的,你知道吧,好怪哈,我说见了见了鬼了都哈,没问题啊,刚才我们因为水写的一行加了这个东西,由编译器自动给我们换行的,它只加了一个换行,没有加回车啊,现在有回车换行它就识别了啊好的同学们,我们运行一下,也就说如果有多行啊,如果有多行。则使用使用什么呢?使用大括号包起来,包括OK执行一下。
08:03
哦,我们运行代码没毛病。没毛病,那么我可以看到这个效果呢出来了,好到此呢,关于我们第一个小案例,咱就说完了,给大家反述一下匿名函数。Very easy啊,Very easy,好,我把这个匿名函数给大家阐述一下。那待会儿呢,我们匿名函数的用处就很多了,要深刻的就是说要要要把这个匿名函数的形式记清记清楚啊,后边我们用匿名函数用的特别的多。啊特别的多,为什么呢?他提升这个写法啊,这样的写法好,这是第一个,然后写了个应用案例啊应用案例,应用案例呢很简单,但是但是结构形式我们还说清楚了。把它写到这了。啊,把这段代码给同学们板书到笔记中去好了啊,我们就说这些啊,我们就说这些,嗯,匿名函数的基本介绍说到这里,下面呢,我们来做一个题,先截一段视频。
我来说两句