00:00
关于元组的模式匹配,其实还有很多比较特殊的用法,那使用起来其实是非常灵活,而且也是非常好用的,那接下来呢,我们对于元组的匹配再来做一些扩展的讲解啊,我们可以新建一个测试的scla object,现在是TEST03,我们要测的是。Match拓展。这方法写出来啊,首先我们可以哎变量声明时匹配,这是什么意思呢?其实这种方式就是我们定义变量的时候,一般不就是X来定义某一个值,负一个初值,一个Y等于某一个初值,那其实有时候我们可以直接把它写成XY元组的形式,然后直接以元组的形式给它负数值,这就表示我们定义了一个int类型的X初值是十运类型的Y初值是hello,如果我们想把它做一个打印输出的话。
01:15
那么这里。X Dollar X,那后面可以有y Dollar y,我们可以运行一下。啊,大家看到X值是十,Y的值是哈,啊,所以这种声明方式的话,在有一些变量,我们可以把它们成对,或者说成组的直接定义,直接声明的时候,会使用起来非常的方便啊,那当然不仅仅是这个二元组可以这样去声明了,三元组四元组多少个我们都可以直接这么去声明,当然了,这是元组的用法,对应的不仅仅限于。
02:00
可以用原组做这个变量声明用集合类型其实也是可以的,那比如说我们可以定义一个直接放在一组嘛,一个list这里边呢,哎,我把它定义成前面是一个first,然后是second,那后边呢,后边不关心,我直接用下划线芯来做一个替代啊,那所以目前的参数个数是可变的啊,那接下来我们这里边的这个list随便给一个数,二十三十五九。T18,那接下来他就会想到了这个负值相当于做了一个什么操作呢?是把first付给了23 second付给了15啊,所以其实就是这样的一个赋值啊,当然了,后边如果说我们还加了一个rest的话,那当前的这个rest其实并不表示这个rest只表示某一个数,如果我们直接这样做赋值的话,我们可以印一下啊,尝试打印一下first。
03:07
后边是second。然后是rest Dollar,我们来运行一下。我们会发现这里会直接报错,为什么呢?因为我们在尝试把一个四个元素的list直接赋值给一个三个元素的list思啊,因为这里边它其实表示的是三个元素啊,那这种方式如果说我们在后边加一个星号的话,其实也不急,这里边并不能表示真正意义上的匹配啊,所以我们会发现真正如果想要去做这样的一个赋值匹配的话,必须最后一个是下划线,哎,这样的话可以匹配起来,当然了,里边我们就不能再有rest的这个表达了。
04:03
现在我们可以看到first负值是23 second负值是15啊,那关于这个大家可能也会想到,那有没有别的情况能够把比方说像之前我们那样啊,第一个是first,第二个是second,剩下的都叫做rest呢?哎,当然是有的这种记的方式,那就需要我们用之前方冒号的方式做一个声明了啊,比方说我这个就叫啊。然后second后边是rest,直接用一个list对它进行赋值。二十三十五,98啊,那最后我们这里边还是做一个变量的声明,如果这样做了一个定义的话,前面这一部分我们的定义也就生效了,而且接下来还可以把rest直接给过来,All the rest我们来运行一下。
05:14
这里边我们得到rest就变成了一个list 98,哦,当然了,这里边我们这个,呃,First和second没有用之前的那个定义啊。我们可以把这个稍微的改一下,得到的结果应该first还是23还是15 rest呢?哎,是一个两个元素构成的列表。所以我们自然也可以看到,用双冒号的这种方式去做,这样模式匹配的赋值也会更加的简单,更加的方便。
我来说两句