00:00
下面呢,给大家介绍我们模式匹配值类型匹配,那这个呢,用的也是非常的多,它是干什么呢?同学们想哈。现在我们假设要匹配一个对象的类型呢。目前。我们一般的方法是一先判断它是不是这个类型,然后再转成这个类型再操作,一般是这样做的,但是如果有了这个模式匹配值,类型匹配的话呢,就变得比较简单了,它直接支持类型匹配。就他直接支支持你的类型匹配,你看我给大家举个例子,这个代码呢,也很简单啊,我把这个代码先拿过来一份,直接说这个类型匹配的事。呃,代码都都不难,那我给大家讲解一下,就叫match。Match type啊,匹配类型的DEMO。呃,DEMO01啊,各位同学。那现在呢,我们先把第一段代码给大家拿过来。
01:02
这段代码大家一看应该也能看出来,我大体要说件什么事,就说我根据看这段代码啊,整个这个是if啊,If else1111个这个语句块。啊,那么这边呢,我是根据传入的七这个这个七的多少来判,给他创建一个对应的呃对象实例,你比如说如果呃A等于七,我返回的是一个。啊,那我如果要是一个三呢,那我给他返回的就是一个第一个int,而且这边我用的是apply方法来创建实例的,OK,当然你也可以用六啊,我这边用的是apply,好,假设我还回归到这个七。好,同学们看啊,也就是说我们这个说明说明一下鸡。这个object的这个实力的类型。这个实例的类型,类型啊根据啊根据根据什么呢?根据这个A的值,A的值来来这个什么呢?来返回。
02:09
来返回。好,代码就说完了,返回。这个对我来说没有任何问题,没有任何问题大家都能看懂,下面呢,关键是这句话,下面这句话呢,我写了一段代码,因为这个代码简单,我也不写了,特别浪费时间啊,写一段代码,这个写完至少得一。知道一分钟好干脆呢,我就把这个拿过来看一下,代码都很简单,大家看一下这个代码。这段代码呢,我做了这么一个测试,就是你看我这里就用到了,用用到了一个什么呢?Match返回,呃,返回值这个特点。啊,我把这个返这边返回的值直接返返回给这个result,然后我输出同学们看啊,这边代码是干什么呢,说明。第一点。啊,我根据。根据什么呢?我这传的object是什么玩意儿?是个对象实例。
03:04
四个对象实例根据object,就是根据object的类型来匹配。来匹配。那也就是说。呃,匹配,那也就是说匹匹配,也就是说我们这个match呢,直接支持类型匹配,那我看到这面啊object match a。冒号int这个什么意思呢?同学们,刚才我已经讲过一个点了。如果我在case后面直接写了个A冒号,就相当于把这个object付给这个A。刚才已经讲过在模式中的变量了,每个知识点都有衔接的,那么相当于把这个对象交给他,交给他过后呢,看看你是不是int,如果是int类型,我就把这个对象返回。看清楚没有啊,这下面以此类推,而且从这个代码我们可以看出来,在开里面呢,这个类型和这个类型不是同一个类型。
04:04
啊,就是如果你第一个变量是十寸,第二个是int和这个int和十寸不是同一个,好这里面就是这个来匹配,最后返回这个值啊返回值好我们来运行一下就可以了,返回值来我们来运行一下,现在呢,我们来判断,如果我给的是七。这个七呢是一个这种类型,第一个参数第一个是字符串,第二个是一个。整数,那么它跟哪一个类型匹配呢?来同学们看到我这里写了一个,这个没有匹配成功。因为首先是二,只有这两个是二,所以说这都没匹配到这个也不是,所以说它直接返回啥也不是。才是对的,好朋友们,我直接运行。好,我运行过后呢,你会发现它返回的是啥也不是。正确,那么现在呢,我给他传入一个。三传入一个二啊传入一个,我找一个有匹配到的,比如说我传入一个八。
05:04
啊,传入一个八,如果传入一个八呢,它返回的是这种的对象实例。这种类型的对象实例,那么他就跟谁匹配了呢?跟他匹配了。就是它看类型来匹配的,那B类型匹配过后呢,这就写了一个对象是一个字符串数组,好只要返回这个我们就OK,好朋友们我们运行一下。好运行过后呢,我们看这个结果啊,它应该是对象是一个什么,一推推好,这样就可以解决很多问题,什么呢?假如我们将来有这样一个需求,我们就是要根据类型来进行进行这个匹配,好同学们,假如我这样写,你们觉得它输入什么啊。如果我在这儿写出一个E。如果我写个E,是不是就代表把你这个对象又返回给这个result了,那也就说将来你返回的是什么呢?
06:00
这个能能能懂吗?啊是这个,就说这点,我们又把刚才那个再回顾一下,这个E到底表示什么意思,有同学啊,说这个问题E就是表示这个意思啊,那么我们执行一下。执行一下,我们看这个结果呢,跟我们想的。啊,这个地方对象是一个字符串数组。我是不是改错了?是不是改到,呃,应该是改上面这个才对,是不是因为我这是字符串嘛,所以说我应该改上面这个好D。好,再重新来玩一下。好,当我运行过后呢,我们看到这返回的这个值呢,跟我们想的是一样的是个字串。好,当然这个字符串里面放的内容呢,就是呃,这个AA,如果同学们有兴趣,可以再把这个字符串,这是这是个这是个字这个嘛,你如果这样写。啊,你如果这样写的话呢,注意啊,因为它这返回这个类型,我们先判断是什么类型。Print,我们看result,它返回类型,他并不知道你是什么类型,说他以any的形式返回,因为他不知道你将来到底是一个,呃,这个还是一个套,它是any,那如果你是any的话,你如果要。
07:13
要返回的话,还要做一些处理,这是我们下一步要说的啊,好,这个大家知道,能够返回我们要的内容就可以了。好了同学们,那到此呢,一个最基本的案例我们就说完了,那就是根据你的传入的实例的类型来匹配,然后呢,根据你的这个需求来返回对应的内容,好的,那第一个案例我们就讲完,好,我把这个类型匹配的快速入门说完了,我们来看看他的细节类型匹配来吧。标题二。标题二,那我讲了一个什么呢?诶,我讲了一个类型匹配是我们的match,它直接就支持了。按照类型的方式来进行匹配,可以匹配对象的任意类型。
08:01
这样做的好处可以避免is instance或者是as instance of的使用,那么这边有一个案例啊,这有一个应用案例,看一下应用案例好的标题三。这个案例呢,我们就给大家说完了啊,很简单的一段案例。来给大家跑,运行到代码里边去。好,这个讲完以后呢,我们,呃,基本的这个类型匹配说完了,我们讲一下它的注意事项。
我来说两句