00:00
好,下面呢,我们来看一下这个函数颗粒化,我们说完了,下面呢,我们来继续看一下,看屏幕啊,屏幕还没广播是吧。看下屏幕广播一下。好,我们来看下面的内容。下面呢,有一个叫抽象控制。那么这个抽象控制是用来做什么的呢?他这样子的啊,看一个需求引出这个抽象控制如何实现将一段代码。一段代码,从形式上看作为参数传递给高阶函数。就说。我们有时候呢,有这样一个需求。而且大家前面也学过这个东西什么呢?就是说我有一段代码。直接就传给了一个函数。哎,这种写法呢,大家看看它是怎么实现的,你比如说在前面我们学过一个叫break。
01:04
那么break able呢,我们可以在里面直接把一段代码扔到break able里面去,还记得吧?诶,那现在我们当时讲这个时候,我们就说了一个简单的话,我们说诶同学们这个可以上去用,但是为什么我们没有讲是吧?到现在我们学到这个地方的时候呢,我们再来看它是怎么用的,来首先我们回顾一下当时写的这一段,这个break able里面传的代码,它是怎么执行的呢?简单的再看一看它是这样子的。就是break里面会直接去传入这一个代码,这个代码体里面在break able里面,它是去把它当做一个函数来执行的,还记得吧。哎,当时有没有要求说这个break able他可以接受的那个函数是什么类型的,还说过吗?是一个传入没有传传入没有那个行参。
02:01
没有输入也没有输出的这种。函数还记得吧?哎,就说如果这个函数是没有输入也没有输出的呢,其实我们就可以直接这样去传一个代码框,它是怎么做的呢?来看一个具体的说法,同学们请看这样一段代码,抽象控制是这样的函数。这样的函数什么的函数呢?满足两个条件,第一个参数。是函数。抽象钩子它函数的,它可以接收一个函数。第二个传入的这个参数,没有输入值,也没有返回值,比如说我这段代码。我直接在这儿写了。写着叫抽象控制。啊,但是这个不好写,我就写它的字面意思了啊,抽象control冲这肯定他专业术语不是这个啊,但是我大体写这么一个东西。
03:05
好,然后呢,我们来把这个代码拿过来用一用,那同学们看一下。这个就是一个抽象控制。My able就是一个抽象控制。啊,抽象控制。为什么说它是一个抽象控制呢?是因为它接收的这个函数是没有输入也没有输出的这么一个函数。是什么呢?是没有输入。也也没有没有输出的函数。那如果你看我这边写了一段代码,大家看这代码能看懂吗?我在这里溜了一个TH。啊,匿名的一个一一个类,然后呢,在里面我重写了它的一个run方法,这个大家应该能看懂。
04:01
啊,这个我就不多说了,因为你一个六完了之后,你override它一个run方法,这个run方法里面我执行了。执行了什么呢?F1。好,同学们看到这里了。如果这样写法的话呢,同学们看。如果这样写法的话,我们发现我们这个my wrong,我就可以这样调用。它是一个函数吗?My room,然后我直接这样写,本身你是可以这样写的。你是可以这样写的。啊,这样写。你看这样写,你还。哪花国在哪,这是这吗?你看诶。这这也不行啊,这个东西。他不让这样写是吗?哦,我我这是花括号啊啊对对对,是括括号,我这写的,我我这方写不对,它这个小括号这边应该也可以这样去传,但是呢,我们看到它这里啊,我再重新写一下,这个地方原先是这样写的,是正确的是吧。
05:10
呃,如果我们直接传一对这个括号小括号,它还不支持吗?他还。小括号里面桌还有一个小括号是不是他。他无法支持这个是吧,那就那就先不去这样写了吧,啊不用写了,不让不让写就不用写算了。化血栓,那么我们看一下这个这个写法,他说我传输这个没有接受的,那我就。行参为公,后面是我的函数题,我传进去,那么这个F1这段代码呢,就等价于把你的这一段代码。相当于啊。考虑到这个位置来。那这样写,我们一执行,我们发现呢,这个效果。
06:00
跟我们想的应该是一样,只是先输出。五秒,然后等五秒过后干完活了,输出干活结束。啊,这样子这个地方就就相当于是做了一件什么事情呢,把我们这段代码放进去执行,可是这样写呢,显得很啰嗦。这个离我们还差一点,因为我们原先是可以把这个去掉的,能不能把这个去掉呢,可以。啊,这就跟我们刚才那个,跟我们原先想的这个方法就特别相似了,就是说如果你这个传入的是一个没有接收值也没有返回的,这么我们直接当成一个代码块来执行也是可以的,那我们可以这样运行。怎样运行呢?可以这样写MY。Run。好,我先把这个注销。就可以这样简化。好,可以简化。啊,对于对于注意啊,对于没有。
07:00
没有输,没有输入,输入也没有返回值的值的这个函数呢,函数函数。可以。啊,可以简化简写啊,简写成如下啊,如下形式。那同学们看一看,怎么说如下形式呢,大家看我这写完了,我直接这样写的啊,我把这个整体这个先拿过来,这样写肯定是正确的。这样写肯定是正确的,我把它先打开,但是呢,因为这个既然你没有传入值,那何必还要写这一堆呢,看这样写啊。这样写,呃。这个这个是多余的啊,这个多余的,那就把这个直接拿掉。但我这个直接答对后,我发现错了很多东西啊,所以说肯定砍掉很慌张,诶不对呀,你既既然没有传入,我不要这个本身也是正确的呀,为什么这样不行呢?不是这儿不行,而是。
08:03
这个地方不行,因为你在这传的是一个代码块,那你这个地方写法呢,就可以变化一下,变化是什么呢?来同学们,我为了分开不打架,我可以再新建一个RUN2做一个比较,那这点我们干脆这样调好,这样掉,这也是错的啊,现在我可以怎么办呢,去掉它。去掉它过后,我们掉的时候呢,也去掉它,这样子同学们看。这样子呢,就说我们就可以实现一个,对于这种没有输入,只有没有返回的,就相当于直接传了一个代码块给他,但是本质不要忘了,仍然是传的一个。匿名函数。啊,仍然是传的一个逆理函数,大家要理解好,这个时候我们再来运行一下,看对不对啊。现在呢,我们仍然调这个啊,调这个这个这个F1里面东西啊,为了体现出这个区别呢,咱们这写个笑脸啊,波浪号干完了,来博浪号,我们看这代码能不能跑起来。
09:04
微信。好,同学们看一下这个效果果然是。波浪号出来了,然后呢,五秒过后会输出干完了。所以说以后同学们看到这种写法啊,看到这种写法呢,马上脑海里面想出来,其实看起来是一个代码块,其实它是一个没有输入也没有输出的一个匿名函数,传给了他底层,它在这里调用了。这段代码框。好,那么关于这个抽象控制的基本的一个使用,我们就说完了,包括这简化我说完了,那下面呢。我们先把这个板述一下,再说一个进阶的使用,好,注意听,我现在先把这个抽象控制的基本使用给同学们板述一下,刚才讲的是什么呢?抽象控制的基本使用。好,写到这来。讲了一个标题二。
10:03
啊,那我讲了什么东西呢?好的,同学们,我给大家首先提出了一个要求,就是咱们能不能也写出类似的这种传一段代码快的效果,对吧,我先提出了一个需求,我说诶,同学们,你们能不能,我们就说相当于说我们看了这个break,我们能不能写出这样代码呢?诶,先提出了这个这个这个问题,然后这个地方我们传的就是一个代码框。好,然后呢,我们就举了一个例子来实现这个效果,我们举了这样一个例子呢,就是抽象控制的一个快速入门案例啊,快速入门案例我就这样写的啊,抽象控制的基本介绍。对,然后呢,我说了,哎,什么是正向控制呢,有这么几个条件。说抽象控制是这样的函数什么呢,参数。是函数,而且这个,而且你这个函数呢,是没有输入值,没有返回值的,好这基于这样一个原因呢,我们写了一个代码,就是应用案例,就是抽象。
11:15
啊控制啊控制抽象,控制抽象的一个应用案例。应用。应用案例,好,同学们,那这个应用案例我是怎么写的呢?各位朋友,诶也非常的简单,我直接呢就拿了一段代码来给大家演示,而且呢,我也写出了它的简化形式,这是它原先的形式。这是它原先的形式,然后呢,这是它的简化形式。啊,这是简化简写形式。对吧,好,这样大家一看,哦,原来是这么回事啊,大家就以后再看到这个代码能能够理解理解起来了,好,我把这个呢给同学们反思到这里。
12:00
好,所以说还得看案例才能看懂,截取一段视频。
我来说两句