00:00
我们来看一个关于B包的最佳实践,我这出了一个题,请同学们思考一下怎么完成,大家看这里啊。请编写一个程序,具体要求呢?有这么四点,第一个函数,编写一个函数叫make sx,它有一个参数。可以接收一个文件后缀名,这个后缀名随便写啊,比如说像D接点JP勾JJPG,并返回一个B包,就是这个函数,它本身会返回一个B包,能理解。那么调用这个B包可以传入一个文件名。就调用这个B包时,我可以传输一个文件名,如果该文件名没有指定的后缀,就是比如说这个这个后缀,比如说没有这个后缀。啊则返回什么?则返回文件名,点JPG,就是给他加上,如果他没有指定的后缀,就给加上,如果已已经有这个后缀呢,就返回原文件名,理解了这意思吧。要求使用B包的方式完成,这里面呢有一个提示,就是我们会用到一个函数,就是string string s,这个包包里面有一个函数叫汉SX,它可以判断一个文件。
01:15
一个字符串后面有没有一个后缀?理解吗?就是这里面有一个函数叫汉S,它可以判断有没有后缀,那有些同学想不起来的话呢,我们可以来搜一下这段代码怎么用来看一个。好,我们打开这个百度。好,这个这网有点不方便啊,那待会再说吧,我就直接告诉他怎么用就行了,这个也不难,来吧,我们写一个必包的最佳时间,跟上老师思路。我们来写一个。必包的最佳实践。跟上老师思路啊。好,最佳实践,给他来一个标题三。
02:00
要求很简单,就是写一个函数啊,写一个程序,完成这么些功能,第一个功能。这个。第二个调用B包。调用B包。第三步呢,要求使用B包完成,最后有一个提示,就是这个函数可以判断。该函数可以判断某个。某个字符串,字符串是否。是否有指定的后缀指定。的后缀明明白啊后缀。OK,那现在有了这个三个要求,有这么四个要求过后呢,我们来完成这段代码,走代码,代码完成。好,跟着老师思路,我们来写一下这段代码。还是打开我们的Vs code,我们现在讲的是什么呀,讲的是B包,我们呢,还是在这里用好吧,还用这在里面用就行了。
03:00
嗯,根据刚才的需求,我们先把这个需求拿到笔记里面来。这是刚才有四个要求,对不对。好,我们整体把这四个要求拿到这块来。来吧。这整体我们来给他注销一下。不然吧,诶。怎么会这样?好,我们一步一步的走,首先根据它的要求,我们要写一个函数,注意听讲啊,Fun make。Function,然后make six传入一个参数,参数叫suff string。这是它指定的文件的后缀,对不对,那么他就说要返回一个B包,那没问题啊,放那返回B包他是不是说的,如果有这个文件名,呃,有这个后缀就。就原原封返返返回,如果没后缀,咱们就怎么样,加上这个后缀对不对,也挺简单的,那就怎么写呢,我接收一个,我就给他返回一个,我要接收一个文件名吗。
04:05
所以说我把这个文件名先接收到。放。我要返回的是我要接收一个是准。对不对,你给我。我要返回的是可以给我传一个十寸过来。然后呢,我返回一个十寸,是这个意思吧,我返回一个十寸。然后怎么来处理这个事情呢?怎么来处理这个事情呢?非常简单,我这样写。Return。一个这样的B包。是不是,那这地方我应该有个变量了,我这边必须得变量叫name。假设室内返回这个。然后我这边就要做一个判断。我这里要做一个判断了,同学们注意听,我要判断。如果。就是如果哪个呢,就是你传进来这个名字,名字有后缀,有指定的后缀,就是这样说啊,如果你没有没有指定的后缀。
05:06
后缀名后缀则加上。就加上。否则。加上,否则怎么样呢?否则我们就按原来的名字返回,就返回原来的名字,原来的名字。非常简单,那写一个判断,判断的时候呢,我们怎么知道,那么有没有指定后缀呢?非常简单,刚才不是说了吗?就这个函数吗。对不对。汉萨写上我对谁来判断这个名字?判断有哪个后缀不就是他吗?就是看看他有没有这个后缀,如果没有就等于false。是不是如果它等于false怎么办?就让这个名字?拼接上这个后缀。这个后缀是你先前指定的,看到没有,然后就可以了,如果他。
06:02
有这个后缀怎么办?就等于真,等于真的话,直接把名字返回去就可以了。能理解吗?其实这种写法呢,也比较不好,其实一般来说直接这样取就行了,这样是不是更更好一点啊,写完了代码写完写完过后呢,我们来测试一下,看看能不能使用。测试一下。Make six是否能够使用?测试make surface surface使用。好,同学们,跟上老师思路啊,我们来走一把。我们来走一把,嗯,我们来这样子走一下,看看这个文件名能否接收到正常的值啊,是最一。等于我们看它返回什么。当然我调用一下make萨,比如说我,呃,不,我们先让它返回来才行啊。返,先返回一个B包才行,第一步先返回一个B包。
07:01
返回。一个B包。B包,OK,也很简单,我用F来接收,然后呢,Make suffx。好,我给他传一个指定一个后缀,比如说叫JPG。没问题吧,好,现在呢,我们来调用了,可以调用了。来玩一把,嗯,我们看看这个文件名,文件名处理后,处理后等于来走一个。那我就调用F。KF,我给他来一个名字,比如说叫做winter,注意看我传递这个winter没有电,没有带JPG,那么它返回的时候就应该把这个JPG给我加上,对不对?好注意还有一个问题,我们这个时寸。没有,这个包没有引进去,所以我要引入十寸S这个包。看清楚没有。这个地方。
08:00
看这有什么问题?一个新的变量哦。F。Return。一个名字,这是不对的啊。这个地方咱们这写的有有点诶没没毛病的,按理说这地方是什么name放啊,怎么写两个呀。怎么写两个呀,不对是吧,写两个就就就有毛病了,语法有问题,再看six这个单词写错了,给他改一下。还有什么错误?还有错误没有?在这我们再看这是什么?一个新的变量on SE。Six,我们看这地方问题在哪里?传入。传入对不对。好,我们来检查一下代码错误在什么地方,加深一下大家排错的能力。大家看一下我这地方是什么问题,是不是跟以前是一样,因为你这是不是写了一个F,你再用F肯定就不行是吧,那么换一个名字叫F2就完了。
09:00
没问题吧,先给一分。好,大家看此时此刻代码就没毛病,那这个时候如果不出意外的话,这地方应该返回什么winter.jpg。对吧,好,我来运行一下。我们可以看到,的确给我们加上了那假设。各位同学,假设我这个地方本身有一个叫什么呢?比如说叫bird。bird.jpg诶,我已经有后缀点JPG了,你们看到他返回,他返回的时候会给我们再加一个JPG吗?不会了,就是因为我在这做了一个判断,我在哪里做了判断,在这里面我做了判断,如果他没有这个后缀,才加后缀,如果已经有这个。PJPG后缀了,他就按照原来的名字返回,是这意思吧?好,同学们再来跑一下,请看效果。这时我们可以看到。Bird后面并没有再给我追加一个点击PG是不是,但是如果你的后缀名是别的就不好说了,比如说你是你是叫做这样的avi一个后缀,这个avi对他来说他不是JPG的后缀,所以说他这样会返回什么呀?bird.avi.jpg能理解吗?
10:16
应该是能理解吧,好再跑一个看一下。是不是是不是给你加上了呀,OK,好,我还是改回原先的处理方案好不好。好了,同学们,通过这个小案例呢,我们就又认识了一下,就是这个代码的代码的这个认识,那么我们现在要对这个代码做一些分析,就是究竟这个代码它哪一块是我们的B包。哪一块是B包呢?同学们想,是不是它返回的是一个函数,这个函数它用到谁了?各位同学它是不是用到这个S了?这个S是不是这个函数外面的一个变量,因此这个返回的匿名函数和外面的six。
11:03
构成的一个B包,能理解吧,哎,就这么一个意思,好,同学们,我们把这段代码呢,给同学们也整理到笔记里面来。大家认识一下。好,我把这块代码。给同学们放到我们的案例中去。对不对,这是一块。下面呢,另外还有一个核心代码,就是调用的这段代码,我也给同学们拿到笔记里面去,没问题吧。好的也拿好放这那写完这个东西过后呢,我们对这个代码啊,做一些总结和说明,做一些总结和说明来看一下。那么上面上面代码的总结和说明,就是我们来体会一下B包有什么好处。那大家看这,我已经把这个代码说明整理好了。
12:00
我们把这个。大幕拉开。我一共总结了两句话,第一句返回的函数。就是make萨的这个,它返回的这个函数和谁,就是你返回的这个匿名函数啊,和make s里面的SX变量。就是这样说啊,返回的函数和make sx里面的这个S变量。就这个就不要写了。变量,变量就是返回的这个函数和S变量组成。对不对,就是返回的匿名函数这个表述啊,真的不好表述,同学们啊,匿名不是你不信,你来讲一讲,他就是有点不知道怎么说了,你知道吧,他返回的匿名函数和make sx里面的S这个变量组成的一个B包。为什么?因为返回的这个匿名函数,它引用到surface变量了。说的再明白,再直接一点,就是这个地方,同学们就是这个。
13:04
和这个变量构成一个B包,能理解。好的,第二个我们体会一下必包的好处,如果使用传统的方法,我们这个功能其实也可以轻松的实现,说老师我不用你这个必包也可以实现这个功能呢,当然是可以实现的啊,没有任何问题,你写一个函数嘛,判断有没有后缀,如果有我就给你原封不动返回,如果没有我就我就不做了,你看这帮你写个函数难道完成不了吗?你写一个函数完全可以,也也可以完成这个东西,那很简单,你看这样写。你完全可以把它给我写出来来,如果我要求你不用B包完成,你写个MAKE2。是吧,这个地方就直接返回。字串这地方也不需要写这么多了,拿掉。不就把这个把这块留下来不就。不就可以了吗?不就可以了吗?你看我调了make萨,我把后缀给他带进去,我判断一下有有没有这个后缀,诶如果没有这个后缀,我直接加上有我就怎么样了,我就把这个原封不动给你返回不就完了吗?其实这块的代码和这块代码都可以完成这个功能。
14:14
是不是,你看我给你调一下,难道你就完成不了吗,可以。你可以完成。你看一样的。我就用刚才那个函数来完成,一样一样的。大家看。我这一段直接调我们的函数。Make six2。对不对,我这也调mixof,你看它一样可以完成这个功能,它也返回winter.jpg,这个也返回bird.jpg,这是可以的,我给你执行一下。为他执行,诶有个什么地方没有写进去,Name变量没有没有写哦,那那这个地方传的就不不是S了是吧,因为你这样就要传两个变量进来才行,第一个。你要针对哪一个判断,第二个你还要给我传一个什么,是不是要传两个参数才可以搞定呢。
15:07
是这意思吧,你首先要告诉我你是针对哪个后缀判断,然后再告诉你这个传进去这个名字是不是,你看这样子。好完了过后,那这个地方我们就要带了,哎,你首先呢,要把这个后缀骨带进去。J皮膏。是这意思吧,同样你看JP勾。哎,这样写才可以啊。说我要判断一下这个里面有没有GB膏。如果。没有我就给我加上,如果有就原封不动返回,这个也是一样道理,我要判断这个字符串里面有没有JP勾,如果有就给我怎么样。返回没有就给我加上。这样子执行就没有问题。大家看是不是效果一样啊?效果一样,但是你们有没有发现,你们有没有发现这两者有什么不一样?你们有没有发现,如果我用B包的话,我只要传一次这个变量。
16:03
这个这个后缀我传一次,但是如果你用函数的话,其实你每次都要传。看到没有,如果我有,我还要判断下面下面的,那我那我这个只要传一次这个JP勾这个后缀就可以了,但是你这个用函数来完成,每次都要把这个变量后缀变量给我带过去是不是,所以说相对来说呢,用B包还是有一点优势,就是后缀你只需团一次。如果使用B包。B包。必包完成,好处是好处是只需只需要传入。传入一次后缀就可以了。是不是啊,是不是只要传一次后缀就可以,但是你用这个函数你每次都得传,不然的话他不知道啊,他不是因为函数是调用一次这个后缀它是不会保留的,它就消失了,但是我们这个这个B包呢,它会保留,它每次调用它会把你这个S这个给你保留下来,是不是这个意思啊,所以还是有它的好处啊同学们,那回到这边我们再来回头说第二点。
17:13
如何使用传统方法也可以轻松实现这个功能,但是传统方法每次都要传入后缀名。刚才已经说过这事了,比如JPG,但是呢,B包因为可以保留上次引用的某个值,所以我们传入一次就可以反复使用,大家仔细体会一下它的好处。好,我觉得呢,就是针对刚才的必包最佳实践,我就总结了两句话,也是比较重要的,我把这两句话呢,给同学们放到我们的笔记中去。好的。稍微的整理一下。对不对,稍微的整理一下啊,我说了第一点是这块。第二课是这块没问题吧。没问题,好,这次呢,我给大家讲的B包的最佳实践案例,然后加深一下大家对B包的理解和灵活的应用,那关于必报最佳实践呢,我就给大家介绍这些。
18:07
同学们在以后的工作中使用的时候,要充分体会到B包的好处,就是刚才老师说的那一点,哪一点呢?就是B包有一个最大好处,它可以把它引用到的就是那个匿名函数,引用到的一些变量保留下来,进行下一次调用的时候再接着用。可是函数是不行的,因为函数调用一次,它的站就销毁了,它原先的变量也就没有了,除非你用全局变量是不是,但是我B包不用全局变量,我也可以搞定这个事。领领会这个好处啊。如果面试官问到你。B包和普通函数的好处,你就想想韩老师讲的这个加后缀例子总结的两句经典的话,OK,好,关于这一块我们就说到这里。
我来说两句