00:00
好,我们继续来上课,那么这节课呢,我们再来看一下我们的回调函数,那么回调函数只是变量函数的一种变形,那么本质上的函数在什么,还是变量函数应用啊,那咱们来看一下怎么叫回调函数呢?在这里边我们要新建一个。这个PP的文件。叫做14啊回调。好了,那这里边我给大家演示是回调函数。回调函数啊,好了,咱们来看怎么叫回调函数,比如说啊,我在这里面定义个函数,定义什么,定一个DEMO函数啊,De Mo DEMO函数好了,DEMO函数定好以后,我在这里面一样,你要给我一个行参,对吧,给完我行参以后呢,在这里边我直接FUC括号。啊,你看这是不是就是变量函数的出现了。对吧,变量函数的出现对不对,所以说了回调函数本质上。是不是依然是什么,本质上依然是变量函数好了,那么定义好这个函数以后,我可能还定义一些其他的,比如说我定义什么呢?W。Wi RI wi right a,就是干嘛写A对吧,一个。
01:04
A。然后再来fu z方这个wi一个B。然后这里面我再来口一行,哔哔哔。好,然后再来一个f ug function,叫做wi TC。好了,回来艾口一个CCCCCC,好,那现在咱们看我定义了这么多小函数对不对,那么首先这里面有个模型函数,就是这个DEMO对吧,这是我自己给起的啊,那好了,那接下来比如说我调用DEMO啊,传一个什么呢?我传一个叫做wi的。啊,传了一个字么?传了一个这个名称,那么这个时候你看我在我的浏览器里面会输出什么东西,是不是会输出一行A呀,是不是就写A呢?是不是输出一行A对不对,那同样,那比如说在这里面我再调用DEMODEMO,什么DEMO wi RI一个B,那这个时候你看这里面是不是就写了一行B,对吧,那在这里面再来demod DEMO一个WRI一个C,那这里面你看是不是又写了一行C。
02:05
看到了吧,AABC是不是写出来了啊,那这就什么,这就是这个我们的回这个回调函数,那怎么叫回调函数呢?你看我说把一个函数名通过字符串的函字符串的方式复制给了一个变量,对吧?然后在这个函数中,我通过变量函数的方式回过头去调用不同名称的函数。对不对,哎,这就叫做回调函数啊,这种结构就叫做回调函数,那么咱们看回调函数一般都怎么应用的呢?咱们看数组这里边啊,比如说我们依然是用数组函数啊,比如说这里边有个叫什么杠杠file filter。他干嘛呢,你看啊。这里边A瑞filter用回调函数过滤数组中的单元,看到了吗?用回调函数过滤数组中的单元叫做A瑞filter,对不对?然后呢,那这里面怎么用的呢?那我们来测试一下啊,那比如说这里边,其实这里面有写对吧,但是我没给大家看过手势,我们先不用看手势啊,就我怎么讲的,你先怎么记就可以了,这个filter这里边你看我们就是把它读一下吧,你看啊,它会依次将数组中的每个值传递到什么,传递到这个函数里边,然后呢,如果这个函数返回来是处,则数组当前值就会被什么会被包含在返回的结果图中,对吧?数组的键名保留什么,保留不变,是不是这个意思?
03:23
哎,那好了,那现在咱们来看一下啊,我也在这里面给大家写个这个filter,你看怎么用呢?在这里面一样新建一个文件叫做15A filter好了,这里面我们来使用什么系统函数对吧,叫做。函数AR。杠F干嘛呢?是过滤数组中的单元。好了,那在这里边,比如说Dollar了,A等于A好了,这里边我给他一堆数啊,比如12345678,然后再来个true对吧,然后这里边有false给他一个。False,但是注意这个false是字符串的啊,再来一个false,这个是什么false对吧,然后比如这里面我再给个零。
04:05
零,再给他一个什么0.0好了,这里面你要看啊,有些值转换成布尔值是不是会为false对不对?哎,那好了,有这么一个数组,我想过滤到这个数组中的这些单元,怎么过滤呢?我通过ay杠,F file。Filter filter,第一个我传一个参数,传谁传一个arr好了,别的我先不管了啊,别的不管了,那这个时候你看好了来。返回一个。结果你看他给我反馈的结果是什么啊,VR跟DP,我们先来打印这个结果,然后我们再打印这个数组,原来的这个数组啊,到了来我们先看结果对比一下。找到我们的第15个来看好了啊,这是我们返回的结果,返回的什么东西啊,一二三四五六七十八,还有处和字符串for是不是返回了原来数组什么,原来数组里面的零,Float,零对吧?还有什么,还有这个不值的for是不是都被删掉了?
05:01
看到了吗?哎,也就是说当我没有给它,没有给它回调函数的时候,它是不是自动把我过滤到这个数组中,默认转换布尔值为false值的条目零转换布尔值数为false0.0是不是也为for,这个for子本身是不是也for,是不是把这些都过滤掉了对不对?那包括比如这里面同样我再给个now,那UR你看是不是也一样可以帮我过滤掉来再来刷新。是不是眼镜帮我过滤掉了,看明白了吧?哎,那是不是就没有了。对不对,在这里边那没有了,哎,那如果我传一呢,比如说在这里边你看好了,我要定义一个函数function,比如干嘛呢,我只保留,我只保留什么呢?只保留字符串类型啊,那叫做什么呢?A字杠SSPRSG。四字符串对吧,那。对了了MY啊,因为a the string是是系统函数对吧,我叫my string,你这里面要给我传一个值,然后我就来判断,判断什么呢?判断这个Dollar v叫A-A啊不对,Str啊A杠十句对吧?谁呀,是不是这个Dollar v,如果你这个Dollar v是一个字符串的话啊,如果你这个Dollar杯是一个支符串的话,那怎么办?我不是就给你退,退一个什么退一个处对吧?否则我是不是就退一个什么,退一个box,这是不是我自己定义的,当然实际上我没有必要这么麻烦,我直接使用A字这个词句给一个Dollar v,是不是他也会告诉我这个家伙是true还是false,是true代表是这么出类型,不是true呢,是不是就是false类型。
06:25
这不是不是数,是不是就不是这个字串的钱对不对,哎,所以我只我就没有必要就这么给他封装一个函数了,但是呢,我只是为了给大家演示,我这里面给它封装一下,封装以后这次不我有自己的函数了,好了,那有自己函数,接下来Dollar result等于什么AR的filter,看到吧一下我要过滤哪个数,这个数组中你要过滤这个条目是什么?那比如说我这里边直接传一个字符串的名称,不是这函数名称叫MYSTG,我是不把这个函数名传到这里面来了,对吧?那么在这里边它也一样会通过什么,通过这个变量函数的方式,是不是回过头去调用我这个函数啊。对吧,那这个时候咱们来看它返回处了,他会帮我保留,我这里边是就一个字母串,所以我打印这个结果是不是就给我返回了这一个字母串,你看是不是这样的来走你。
07:08
个瑞11这个家伙放是不是只有这一个字符串的放是不是,他是不是只把它给我返回了,对不对,哎,这就是咱们什么呀,回调函数的应用啊,也就是说当你需要什么样的功能,你直接写到这里边就可以了。能明白吧,你比如说。这里边啊,我这里边还有什么呢,还有这个整形呢,我想再过滤,我想拿拿到所有的整形,拿到所有的整形怎么办?我是不是直接简,这回简写了,我不定义了,对吧,到了。给他把谁扔进去,把这个叫做A次杠in,就是A次杠一的是不是我们系统函数啊,哎,那系统函数在调用的时候是整形,它是不是返回数,不是整形是不是就返回放,那这个时候来,你看我来打印高了,也让他给我拿了,是不是我所有的整形。走你,你看是不是所有的准确值都给我拿到了。看到了吧,哎,这就是咱们这个A功能干嘛干嘛干嘛呀,是帮我过过滤数组中的单元。
08:02
对不对,哎,借助回调函数过滤数组中单元,那好了,那接下来咱们自己来想一下啊,我们能不能实现这个,呃呃,Filter的功能呢。能不能实现?那就不管怎么写,首先我们得先去定义一个my filter这么一个函数,对吧?那么定义好这个函数以后,这个函数有两个参数是不是必填的?一个参数什么,一个参数是Dollar a不能说必填的,是不是你要给我一个数组,这里边要告诉他是数组类型的对吧?那第二个呢,你要给我干嘛?是不是给我一个空字符串对吧?这里边比如说用UC,它默认可以什么可以为空。对不对,哎,那这里边咱说了,如果说。如果这个到了f func要是等于等于空,等于等于空的时候。是不是直接过滤,过滤什么数组中这个单元。为false的条目。为false的元素吗?是不是这个意思,也就说如果如果什么如果f func或者是MK检测检测func,它要是等于nu的话,等于nu是不是就为空啊?为空是不是就直接过滤,过滤是不是就直接for is变离Dollar AR对吧?As Dollar k指向的Dollar v吧?
09:10
对吧,这里面我再做一个返回的变量啊,到了A。等于它那是不是这样的,那这一时候咱们就要看谁转化成布尔值为false了吧。对不对,那也就是说如果如果什么,如果这个到了V啊,如果到了V,他要是这个。为处我才保留对吧,也就是他如果它为处我是不是直接干嘛呀,把这个Dollar a ay中括号。中国号咱要保留下标是不是K加进来是不是就等于。等于Dollar v是不是这就保保存住了,那最后干嘛,最后在这里边我是不是return return这个Dollar是不是这个意思。哎,看看能不能理解啊,你看啊,比如说咱们传传什么依然传这个数组,我这个数组到这呢啊CTRLC依然传这个数组,我把这个数组放到这里来了啊来看一下放到这里来了,那传这个数组,传这数组的时候,我是不是就变利这个数组啊,不好意思,是不是就变利这个数组,便利这个数组的时候,我是不是就判断这每一个值,如果这个值。
10:11
在这这里面是不是会发生自动数据类的转换,是不是会转换成什么,转换成布尔值处和放置,如果这里面值转换成布尔值是处的话,那好了,那是不是就是。它为真的对不对啊,如果转化成为放的话,它是不是就就就为假了,那如果为真的话哦,为真的话是不是走到这里,我是不是就把它当前的值给它保留住了,对不对,而且人家是带原有的下标吧,你看这里边在咱们在保留的时候,是不是带原有下标,你看11FALSE11放是不是原有下标,哎,所以咱们这里边把它K是不是也存到这里边,带它原有下标保留,哎,那现在你再来看,我来调用MY。杠就把咱们的Dollar AR扔进去,扔进去以后它会给我返回什么,返回一个result,那好了,那我们再来打印这个result啊,VR-D打印Dollar result。好。走,来,你看告什么呀?告诉安迪范的未定义的constant func在我的第三行那写错了。
11:04
这里吧,FUNC是什么?是不是到了FUNC啊,这个变量是吧,写错了啊好了,这个时候我们再来刷新,刷新完以后你看。是不是不为放置的乔木?是不是都拿过来了,跟我刚才那个,你看这里面size的长度是不是九,这个size长度是不是也是九,跟它俩是不是一样的,对不对,哎,那好了,那这是默认的情况,那如果说一定要传值了呢。对吧,传值了是不是就要覆覆盖覆盖到它默认的这个值啊,这是不是给了一个默认参数,哎,那好了,那传值了也就是走到这里面,也就是else,否则否则也就是代表了什么,代表人家传入了什么回调函数名称吧,哎,传入的回调函数名称我是不是一样判断,如果如果什么到了func括号。错了。我是不是还得遍历数据啊?哎,还是一样,For is便利,谁遍利这个糟了A。Dollar AR,然后呢,S Dollar k子向量Dollar v是不还这么便利对吧?那这个时候如果如果什么UC括号Dollar v。
12:04
Dollar v是不是这个意思,哎,把Dollar v是不是扔到这个函数,回到函数里边了,如果它返回处的话,那这个时候干嘛,我是不是就是Dollar a。Ay中括号里面的Dollar k就等于一个Dollar v呗,是不是这个意思啊,对不对?那至于你回到函数怎么写,那就是你自己的问题了,对吧?你想要什么样的值为true,什么样的值为false,那是不是我就会帮你保留对应的为true的值?哎,那现在一样,你看比如说我想过滤整形,那到了it等于MY-filter file啊filter这里边我传一个数组进来,再传传什么传一个A-in的,是不是保率整形的,那我们再来打印这个结果,你看是不是所有的整形都给我拿到了。走,你你看所有的整形是不是就给我拿到了,是不是在这里跟刚才我做的这个是不是一样的,对不对,这个时候我是不是就模拟了什么,模拟了这个系统aryg filter的功能是不是实现,我们自己去定义一个对不对,所以可见函数的这个对于我们的重要性,如果你知道有这个系统函数你会用了,那么好,你是不是可以直接使用了,如果你不会,你不知道当你需要过滤数组中某一个元素的话怎么办,你是不是还得自己去写啊,而且自己去写这么一大堆啊。
13:16
对不对,当然你自己写的东西就一定比系统的好嘛,未必吧,系统的已经做到了优化的极致,它的效率肯定是最高的,对不对?哎,所以我们也要当我们讲完函数以后,大家就需要干嘛,需要接下来就需要疯狂的去记函数,去背函数啊,那好了,这就是咱们这个filter的功能啊,那同样在这里边我是不是实现了回调,是不是在这个函数里边,我通过什么,通过这个函数名以字符串方式传入给他,是不是变量函数生生生成的?哎,那么在这里边我是不是通过调用变量函数的方式,回过头去调用其他的函数,对吧?你传的是这个函数,我是不回过去调用它,你传的是另外函数,我是不是回过头去调用另外一个,那么这种结构就叫做回调函数啊,听清了这种结构就要回调函数啊,好了,那咱们来看一下。
14:02
来回到函数啊,咱们说了,在一个函数A函数中,通过变量函数的方式叫到八括号,这种调用另外一个函数可能是B函数,可能C函数,对吧,而其函数名称是通过A函数的参数传递过来的,那么这种方式就叫什么,就叫做回调,回调函数啊,都是回调是回调函数。啊,因为函数A中的变量函数这个家伙是不是会根据用户传入不同的时参,回过头去调用不同名称的其他函数,对不对,比如说这里边你看我写一个例子对吧,这是我做了一个模型,你要干嘛传给我这个调用的时候要传给我一个一个变量对吧?哎,传了,比如说传了一个B,传了一个B,我是不是就B括号的方式,是不是就回过头调用B函数呢?哎,所以回调函数这里面,你看这个第一个要素啊,干嘛呢,变了函数对吧,然后第二个要素呢,怎么样传入函数名称字符串,是不是只有达到这两点才叫回调函数啊,哎,这种结构就是我们的回调函数啊,也是我们变量函数的一个高级应用啊好了,那这节课我们到这里。
我来说两句