00:00
那下面呢,我们来继续聊一下这个对象匹配啊,这个对应用案例一的一个小结,其实刚才已经讲过了,再过一遍吧,构建对象时,方法会被调用,当square n写在case后时,比如说刚才我们写的case square n怎么怎么样会默认调用on apply方法及对象提取器,那么number这个词就是你们看到这个number这个词。这个number这个词会被传入到我们这个对象提取器里面这个Z,那么如果返回的是一个sum集合on apply方法提取器返回结果这个就会把这个。集合里面那个值N返回给返回,返回给这个N,这个行参,那么case中的这个对象play提取返回的sum表示匹配成功,如果返回一个N表示失败,好,这个呢就不再多说了啊,我们再看一个案例,加深一个印象。再看一个案例,加深一个印象,好,这个是我们刚才讲的,刚才讲的这个基本案例,我们来看这个案例,这个案例呢也异常的简单,我们来看一下他干了一件什么事情,首先看这段代码。
01:07
我加了一个新的东西,叫only sequence。那为什么有这个东西了呢?为什么有这个东西呢?因为我们刚才演示的案例呢,它返回值只有。就是它返回过来呢,它的那个对应的那个构造型参只有一个,我们用的是only,但是也有一种情况,就是将来我们构建一个对象的时候,可能是传了好些参数。对,好心参数,这时这个这个卡拉设计者呢,他又提供了另外一个方法叫unly sequence这个代表序列,那这个时候返回的这个option呢,就是什么呢?就是一堆数据了,它这边写的是option,里面放的是sequence下面的这个,那就代表这里面可有多个。多个,那我再举一个例子啊,这些代码都很简单,你看我这写了个爱丽丝Bob和汤马斯,那这是干什么呢?我这里写个names,它也是个集合嘛,也字符串当的一个集合,Match,我直接也去匹配,我直接也去匹配这个name names是它的一个word认的一个构造器默认,因为他没写这个默认,默认默认构器嘛,然后这里面我写了first second和呃,Third,就是我认为将来你应该给我返回三个。
02:27
那这个时候一旦这个写完了以后呢,大家看,因为它默认会去调用他的这个方法。我知道啊,我们要讲了,只要是匹配这个构造器,一旦匹配它会反其道形式调用它的这个方法,调用这个方法以后呢,我们在这里写了一句什么话来看这里,我说如果它还有逗号。就返回一个sum,这个sc.SPSP,那这地方大家可以可以想象,里面应该是存放了三个数据,分别是爱丽Bob和Thomas斯,也就这个sum里面这个结果应该是什么样子呢?是这样子的。
03:05
哭起来。第一个字串。逗号第二个字串,逗号第三个字串,那么这样就三个字,三个字就分别给了first second和THREE3个。好,我们这个案例跟刚才几乎一样啊,几乎一样,只是参数增加了,那么我们快速的演示一下代码,我就不写了,这个代码写起来很费时间啊,因为代码这这些代码没有逻辑上的东西,只是语法层面的,因此没有什么太多要去。说从业务逻辑上介绍的,我就直接运行就可以了,Match我们的这个object的这个第二个案例DEMO2。同学们注意听讲就可以啊,这些语法层面的东西就是老师告诉你就知道了,不需要动脑筋。好,那现在呢,我把这个代码给大家直接拿过来用,这是我写的一个对象,好写的一个object。Object好,然后呢,我把它格式化一下,哎,这个地方呢,同学看到啊,这个地方是看什么呢?就是当当这个对象啊,当这个构造器构造啊构造器是。
04:13
是多个参数式,多个参数式啊,就会触发,就会触发,就会触发这个函数,这个它仍然是对象提取器,这个就会触发这个触发诶写错了啊,触发这个这个对象提取器。对象提取。题。去去,哦,OK,那现在呢,我们把刚才那段代码呢,拿过来用一下就可以了,在使得这么一段代码很简很简单的一段代码,非常简单,大家看我写了一些什么呢?这是一个字符串。这是一个字符串,大家一看就知道的啊,没有什么不好理解的,然后呢,我把这个呃,Name是寸放到这匹配,那这个原理跟刚才跟跟刚才一样啊,这么会干什么呢?注意听,把刚才那个在再给他写一遍。
05:07
再再说一遍啊,就是当当匹配到当执行,我我这样直接说啊,当执行下面这个case的时候,那么他会干什么呢?当时就说这个时候好,我简单再写一写。就写意思啊,会去做呢,首先会去会去调用,会去会调用什么呢?就是这个构造器,就是你对应的这个构造器,你写的不是十罪吗?用它的这个方法。啊,调用这个方法。啊,调用这个方法,然后这个方法里面不是也有一个十寸吗?这个十寸就是你这传入这个十寸就会把它,我就快速写一下啊把什么呢,把这个值。把这个值传入给。传入给谁呢?传入给这个screen里面的这个S,这个这个形参是str,好,这是第二个动作,下面一步干什么呢?下面他执行这个play过后,他会把这里面sum多个,因为你这肯定是多个了,他把这个sum这个结果啊如果啊看如果你有满足有逗号了,就说如果你返回的是这个。
06:20
如果是返回这个啊,如果返回的返回的是这种结果,但是这个准确的来讲,应该我们这边就应该是这样子的啊,这个一一分割过后呢,变成这个德行了啊,一分割就变成这个,呃,爱丽丝。Alice,然后我们的这个bombbo,哦,Bombbo。然后是我们的汤马斯。啊,这样返回这个它就会你返回这个值要跟他对应,就是你这必须得是三个啊,你要写少一个那不行,你少一个就代表不匹配成功了,返回这个分别给谁呢?分别分别给我们这个name里面的first和这个,我就快速的写一下,我就不写那么多了啊,分别给他,注意这个地方一定要匹配个数,一定要匹配成一样,如果个数不一样,也表示匹配不成功。
07:12
就是如果说人家返回了三个,你又只写了两个参数,那就表示匹配不成功,好,这里有个注意事项。这里有个注意事项。啊,这个同学们以后会用很很多啊,注意注意这里这里的这个返回的,返回的这个值的个数,个数需要需要和这个,呃,就是我们所说的这个构造器的这个个个数要保持一致,就跟它的个数要保持一致,否则就是不成功啊,要保持一致。要。要保持一致。要一样啊,要一样好,那这个就OK了,就OK了,当然如果你返回的是个嫩,你返回的这个这个嫩,那仍然表示不成功,这个跟前前面是一样的,只是它多了一个什么呢?就是返回多个多个这个这个值的一个效果啊,如果返回的是,那则表示不成功,表示匹配失败。
08:12
这个跟前面一样表示呃,匹配失败了,好,写完了同学们,我们来运行一下看效果啊,现在呢,我这么一运行,应该你可以看到我们这是最CONTENTS3个人的名字,然后分别打出了这三个人啊三个人我用的是这种呃,字符串里面含变量的方式来输出,来运行一下走一个。好,走一个好,当我们运行过程呢,发现这个结果跟我们想的一样,爱丽丝Bob和汤马斯,那么嗯,我们要确认这个方法肯定被调用了,而且一定进入到了这个sum,当然进到这else就不进去了,现在我改一下啊,同学们,假如我故意把这个都改这样子啊,同学们看,首先我改第一个动作。假如我这样的个数跟你不一样。跟你不一样,我们现在看看此时此刻会出现一个什么情况啊,走一个。
09:06
好,我们看一下这个结果。直接报nothing match的,就是说因为你这个只有两个,但是我返回三个,那对不起,那表示失败,这是这是一点,这是一点,那么还有一个呢,就是假如我在传的字符串一个逗号都没有。啊,一个逗号,一个逗号都没有的话呢,那相当于说这里面不含这个逗号,直接返回一个嫩也表示失败,我们再执行一下。也表示这个对象提取失败一样是那match的好,就是这两个点大家要注意,因为它是很严格的,就是你你的对象的构造和我这个逆向要保持一致啊,保持一致这是它的一个规则,但是有1.1定要清楚啊,你认为匹配成功还是不匹配成功是由你的业务逻辑决定的。你自己的业务逻辑决定的,就说比如说刚才我举个例子,我举个最简单例子啊,刚才我们不是写了一个match object吗?我们写了这样的东西,我这写的是。
10:04
我我这儿写的是这个方法。我这写的是这个方法。就是上午麦子我认为这个是匹配成功,那假如我我这边瞎写一个,我说给你返回一个别的,比如说我这边就再加一个一,它返回,它返回来也就是这个加一啊,那就说明你的业务逻辑来决定的,到底你认为这个。就说这个地方的对象的构建和这个对象的这个提取,这个业务逻辑还是把控在你的手上的,就说就说你自己写错了,肯定是错啊,比如说你这传了个5.0,结果像我这样一提取出来变成多少了,变成6.0了,那肯定是本身是错的,这是你自己程序写错了。人家这个人家这个对象匹配只是提供一个机制,至于你怎么写是你的事,就好像同学们,我们说你在你在超市买了一把刀是吧,准确的讲,我们买刀都是为了做饭嘛,你你你跑去干坏事,那你不不能怪别人嘛,对吧,所以说这个这个东西业务逻辑还是你确定的,不是说不是说你呃,人家把这个机制提供给你,人家就完事了,那那是另外一回事,比如说我这样一写,你返回来他也会匹配成功,结果返回是6.0,你你你你运行下。
11:18
因为想他这个不做校验啊,他不管你那么多,你返回是就显然是错的,那这个错不是人家机制的错,而是你代码写错了,谁让你这么干的呀,你本身是这乘以Z,那你就取平方,你为什么加一个一呢?好注意这个细节啊,我不是我一定给他说清楚,人家只提供机制,至于业务逻辑是你程序员的事,好同学们关于这个我们又讲了一个案例,同学们呢,知道一下就可以了,好的,那现在呢,我把。应用案例二小结一下,注意听,当case后面的对象提取方法参数为多个时,默认会去调用我们的on apply sequence,就说你的是多个,他就找这个on apply sequence,如果你是一个,他就去找on apply。
12:01
OK,那么如果按apply返回的是sum,获取其中的值,判断得到sequence中的个数是否为三,如果为三,将三个元素分别取出付给first second third,这个名字是你写的啊,名字你随便写,就是刚才老师写的这个东西。不是不一定啊,这个这个案例。我说到这里,我的那个object上哪去了啊?Object在这就说这个名字不一定非要叫first second和third,就说你随便写ABC都都行。不是不是固定的好,第三个其他规则保持跟原先一样好,那么关于这个题呢,我们就先聊到这里啊,其实挺简单的,并不难,只是告诉大家,不告诉大家你肯定是不知道的,好,同学们,我把第二个应用案例呢,又给同学们进行一个板书。啊,应用应用案例二。应用案例二好,各位同学,我把这个应用案例的二呢也给大家板述到咱们的笔记中去,首先把代码写到这里,诶刚才我们写了一段代码对不对,诶代码啊,这这块稍微麻烦一点,所说我我的画的时间稍微多一点,大家注意一下,好,这是我们刚才写的一段代码啊,一段代码,待会呢,还有小结,代码小结。
13:21
好,代码的小结。好,同学们,我先把代码给同学们放到笔记中去。这是源代码,那么代码的小结呢,我这里一共总结了有这么呃三点,大家呢也看一下就可以了,非常简洁。哦,三点,所以说咱们写完一个东西呢,最好总结一下,就好像你们学完,呃,海波老师讲的这个大数据过后,按理说你们应该总结一下的,我也不知道你们有没有总结哈,按理说应该总结,就说你从这个项目里面你得到什么,呃,这个知识没有,你缺哪些,你总结,诶那你下一次就会感觉到真的有经验了,有些人为什么学的那么快,因为他做完一件事情他就总结,总结完了过后,东西他放到自己的一个文档里边,他就感觉到每天都在成长,有些人是干什么呢?特别相信自己的记忆力啊,觉得自己很牛啊,我我知道这个做了我肯定忘不了,对吧,其实第二天就忘了啊,第二天就忘他其实就感觉每天就是重复性的工作很多。
14:22
甚至有时候我我就这样一个印象,就是说这个知识点我感觉好陌生,诶,好陌生,我觉得要重新学一遍,压力很大,结果我把笔记翻出来,哦,原来我学过,那么这个从心人的心理上有个什么呢?有个心理暗示,就觉得自己学过就很牛,知道吗?人是有心理暗示的,如果我告诉你这个东西你完全没学过,心里心里是很害怕的,当如果你确认自己学过,你心里面是很坦然,觉得这肯定没问题,这叫心理暗示。那为什么有些人很猛了对吧?因为他心理暗示很积极,有些人一干一些事情,他心里马上告诉你我不行啊,这个人就很,就很难往前冲。你去理理解韩老师一句话啊,好,那这个就讲完了,我们截取一段视频啊,截取一段视频,这是我们用案例二,看看下面还有没有好可以了。
我来说两句