00:05
打开我们第12章模式匹配。模式匹配是我们SC里面又一个特别重要的内容,特别的重要啊,它配合配合我们的这一个集合的操作,可以完成非常复杂的功能模式匹配。那么我们来看看SC里面这个模式匹配,它是要讲一个什么内容呢?来,首先开篇名义。在前面我们讲SC基础的时候呢,曾经我讲到SC里面没有Switch了,对吧,那么他没有Switch。怎么办呢?它提供了另外一个东西叫模式匹配来替代Java里面的Switch,而且它的功能非常的强大,就是比Java里面Switch强大很多,强大很多。那么模式匹配语法采用的是match关键字,就是说原先Java里面是case,它是match case,每一个分支采用case的关键字进行说明,当需要匹配从第一个case开始。
01:13
如匹配成功,那么执行对应的逻辑代码,如匹配不成功,继续执行下一个分支进行判断,那有一个问题,如果什么都不匹配,则执行这个case下划线,这个分子就是默认的,有点类似于Java里面的defpot,这是match的一个基本介绍。那么我们还是老规矩,马上来看一下它的使用,Java的Switch,一个Switch,这写错了。Java里面的Switch呢,它是长这个样子,它每个语句之后呢,都必须带一个break,如果不带这个break,就会出现什么现象呢?穿透是吧?就是呃,老师讲过,如果不带break,零匹配上过后会直接执行CASE1里面的代码,这个现象呢叫做穿透。
02:03
那么在这个Java里面,Switch这个回顾我们就到这里,我也不去写例子了,因为我重点呢想给大家讲一下。SC里面的东西,那现在呢,我们来一个快速入门案例,完了过后我们再讲细节,在SKY里面这个模式匹配呢,也是非常相似的,它是这样写的,前面呢,比如说我有一个oper变量,我用opera match case,下面的一系列东西,大家看这个代码啊,就说。什么意思呢?如果这个oper匹配。如果它是加号,那么就执行这里面代码,注意看后面我没有带break,不需要带,不需要带,因为它自动知道会进行这个结束,因为我们呃写代码之后,我们知道这个执行完了,过过过后就那个可以可以退出了。那么如果是呃减呢,执行这个如果是乘,如果是除,如果都没有匹配到呢,我们。
03:04
一个下划线,这个下划线的含义又发生变化了,我们这个下划线已经出现了好多次了啊。原先我们最早的出现是给一个默认的值,我们又出现一个下划线呢,大家还知道我们还出现过把一个函数赋给另外一个变量,对吧,我们还这里又出现了一个下划线,这是干什么呢?代表一个默认,就是都匹配匹配不上,我们还有一个下划线。对吧,好,那么呃,我们也不多说,我们直接来运行一下这段代码啊,代码很简单,我就不写了。非常简单的地方呢,我就直接给大家演示一把就OK,没有什么难度,好,我们新建一个章节叫chapter。012,这是我们第12章。12章呢,我们先看第一个小案例,这个叫什么呢?叫做match match match demo0一来给他一个object没问题。
04:02
好,来走一个总函数啊,快速的走一下,那么我做一个简单的解说明。说明好,第一点呢,Match和case是关键字。是关键字就说不能改啊,就说是关键字不能改,固定的写法啊。好,第二个呢,同学们可以看到啊,在这里我们可以看出来oper呢,就是我们要进行匹配的这个变量啊,嗯,这个地方可以看到这有一个这个符号。Case,呃,这个match有点类似于我们Java里面的Switch,感觉啊类似。啊,类似什么呢,Java的Switch。Wi,那K还是K了这个符号呢?我做一个解释,这个符号代表什么呢?如果匹配成功,就执行后面的代码。当然这个代码呢,可以可以是个代码块,也可能是一句话,就是你也可以这样写。
05:03
这样写也行,如果是多句话呢,你可以用大括号括起来,当然有同学说了,老师假设有多句话,我不括起来,可不可以呢?也可以,如果你你有多句话,你这样写也是可以的,只是看起来怪,就是如果你有这个加号,如果成功了,这个地方它会自动认为是一个整体。你不用大括号他也知道。不像我们,呃,Java里边是吧,多个语句,你这个这个还要括起来,它这里可以不括好这个呢,我也写到这里啊,总结到这里。好,我总结到这里。啊,总结什么呢?就是这个匹配成功后。如果匹配成功。对,如果匹配匹配成功成功。则则执行执行这个后面的代码。按后面的代码。
06:00
那么这个代码呢,可以有多行代码,代码块直接写代码块啊,可以有多行。OK,这是又一点,那么第三点呢,它匹配的时候仍然是从上到下一直匹配,只能有一个入口就匹配到一个就会执行。啊,匹配到一个,那么这样子啊,啊匹配的顺序,匹配的这个顺序,顺序是从上。从上到下。到下匹配到一个,匹配到一个就执行对应的这个代码。哎,代码好,这是第三个第四个,呃,代码块就是这个符号后面的代码块无需break关键字,它知道,它就会自动退出,后面代码块不需要写。不需不要写啊,不要写break。它会自动的退出这个match这个代码块会自动的会自动的退出。
07:00
推出这个match在方块。好,第五一个,如果一个都没有匹配到,他就会去干什么呢?去执行case下划线这种代码。好,如果一个都没有匹配到,都没有匹配到折直行。则执行case下划线后面的代码块。好,各位同学,我们来运行一把吧,这是一个最基本案例啊,这是一个最基本的案例,那么现在呢,我这里写了一个井号,那井号呢,这都没有匹配到,所以它会直接执行op这个error,那瑞这个res呢,显然仍然是零好执行一下就可以了,看效果。好同学们,刚我执行完过后呢,果然如此,我改一下,我把这个呢改成一个减号,改成减号以后呢,它会匹配到这个,所以说N1减去N2交给res,那res变成N1,就是20减去一个十等于十,最后结果是十。
08:04
代码也OK了。好,这是我们最基本的一个案例,就讲到这里,那么我给大家进行一个快速的板书match,好,这是我们讲的又一个章节,对吧,这个章节呢,叫做模式匹配。模式匹配,这是第12章。模式匹配来写到这里。诶在这这个位置,诶写错了啊,模式匹配是我们的标题一,好标题一。那现诶这个为什么。为什么它会自动的。到这来,这是我的正文啊,改一下就行了,我P1,那么就是match。好,给他一个标题二,好,标题二。会自动的,怎么跑老跑这边来了呢啊。
09:03
就是哪个地方出了问题了,他为什么每次默认是这个代码。不是这样子的那个。看一下啊。好,这样这样这样就OK了啊match。Match好,标题二,标题二好,这样就正常了啊,那么match这块呢,我们先做了一个基本的介绍。这点大家要有一个基本认识对不对?哎,这是它的基本介绍,那么我做了两点,第一个呢,就是模式匹配的功能比Java的Switch更加的强大,第二个呢,对它进行一个简单的概述,啊,进在概述呢,这个也说了啊,现在呢,我们就说完了以后,我们来了一个快速入门案例,这个Java我就跳过去了,不看了,我们来了一个呃,Match,呃,Switch match case的快速入门案例,走一个。好,Java sc的是SC的,SC的这个match的快速入门案例非常简单,来写一个。
10:07
好,把代码呢给同学们放到笔记中去,Easy啊easy,好,这个应用案例给大家粘贴复制一下。OK,那这里面重点就是我这里做了几点说明,大家要有一个基本的认识。好,这是match的基本介绍和快速入门案例,我们就先介绍到这里。
我来说两句