00:00
我们已经了解了模式匹配的基本用法,那接下来我们再强调一下模式匹配的几个要点,那首先就是我们有一个case下划线,是作为一个类似于Java当中default的一个分支的,也就是说如果前面所有的case分支都不匹配的话,那么接下来就会执行这个分支。如果我们并没有一个兜底的这样一个case下划线分支的话,那么这个时候就会抛出一个match error啊,这个大家需要注意一下,那么在每一个case里边不需要使用break,只要匹配上自动执行完了之后啊,就会中断case那。我们这个朝右的箭头后面的代码块呢,直到下一个case语句之前的代码可以作为一个整体执行,我们可以不需要画括号,当然你如果想要括起来的话也是没有问题的,那这里边match case语句还可以匹配任何的类型,而不只是字面量,也就是常量,哎,这个我们会在后边再给大家展开做讲解,那接下来呢,我们是再给大家介绍一个比较好玩的用法,就是所谓的模式首位。
01:13
哎,之前我们在讲到for推导式的时候,大家记得当时可以有一个守位,循环守位,那现在在这个模式匹配里边match case也可以有一个首位,那他想表达的是什么意思呢?那就是如果说我们要加一个条件判断的话。那可以加一个if,跟在我们当前这个case语句后边,它就表示符合这样一个条件的值,那么就会接下来进入我们当前这个K分支里边去做一个处理。那接下来我们还是举一个具体的例子看一看吧,看这部分来一个分割线。接下来我们看是第三部分,测试一下模式首位,那比方说我们就测试一下非常简单的一个例子啊,我们求一个整数的绝对值,这个本身其实非常简单啊,我们就把这个定义成叫ABS了,环入的一个注叫number吧。
02:21
返回的还是一个int类型的值里面的话,那自然就是要看number match一下。对啊,这里大家就会想到,那目前这个求绝对值的话,那其实是要根据它正负零的这个值啊,来做一个最后的判断,如果是负数的话,求相反数,如果正数和零的话,直接返回自己就可以了,那当前这个不是一个具体的值,那我们应该怎么样去定义呢?哎,这里定义的语法是先首先先定义一个变量,接收当前的这个值,我说我定义一个I啊,那么后面加一个首位就是if a大于等于零的话,那么我们再跟上执行的这个分支语句,那就是直接返回,哎,完事了。另外S如果。
03:14
啊,这里边也可以直接用I或者用J啊,另外一个变量我们分的清楚一点也是可以的,那后面就是if I小于零的话。那就直接返回,不看了这个例子,我们会想到直接用if else也可以非常容易的实现,我们只是利用它来讲解一下。Match case里边的模式首位大家看,这里边并没有一个确切的值,而是给了一个范围,利用if附条件判断,呃,这个模式守位。做这个条件判断,然后考虑我们当前这个分值该执行什么样的操作啊,那对应的我们可以把测试的语句也打印出来,直接调用ABS,如果给一个正数的话,输出的应该就是自己,如果要是给一个零的话,也应该输出自己,如果要是给一个负数的话,那自然应该是输出它的相反数了。
04:13
我们可以运行一下。没有问题,六十七零二十四,这就是关于模式首位的用法。
我来说两句