温馨提示:文本由机器自动转译,部分词句存在误差,以视频为准
00:00
那前面我们介绍了可以用模式匹配match case去直接匹配一个对象实例的内容,那这个过程我们会发现还是有点绕的,哎,这我们首先是要定义类,然后呢还要定义它的伴生对象,诞生对象里边我们要实现apply方法,除此之外还必须要实现一个on apply拆拆包拆箱的一个方法,把它的属性全拆解出来,那这个过程跟我们之前介绍的scalela的一个设计的理念,要让程序员上手更加的方便,更加的轻松,这好像跟我们这个理念是背道而驰的呀,太复杂了,尽管实现了这样一个功能,那有没有更简单的书写的语法呢?诶,这是有的,这就是我们之前曾经在源码当中见到的一种类型,那就是所谓的样例类啊,样例类的定义呢,非常的简单,就是在我们的一个类前面加了一个关键字case case我们知道就是有样例的意思嘛。啊,那么这样定义出来的样例类呢,相当于默认就给我们实现了类的半生对象,以及里边的apply和on apply方法就是它的打包啊,装装箱和拆箱的方法都已经定义好了,我们要做对应的这个匹配的时候,因为它已经是样例了嘛,所以直接拿出来匹配就完事了。
01:23
接下来我们在代码里边另外做一个测试。Object s05。接下来我们要测试的是。His class,我们把微方法写出来,那下边首先还是希望要去创建一个class,那这个class呢,之前我们是。我们现在这个叫做STUDENT1啊,跟面那个做一个区分,那之前我们是直接把student这个类创建出来了,那现在呢,我们不希望再去做更多的操作啊,要去定义伴生对象apply on apply方法,那我们可以直接把它定义成当立类。
02:15
样例类定义的方法非常简单,前面直接加一个case,然后加了case之后呢,诶,大家发现这连这个V都变灰了。这也是样例类的另外一个特点,就是加上之后我们主构造器里边的所有参数默认都是一个呃,前的一个属性,所以我们就不需要再去定义了,然后另外呢,对应的伴生对象以及它里边的apply on apply方法全部自动生成,那我们现在要做匹配的话就太简单了,哎,只有这么一句样例类的定义,那接下来我们把之前的这个代码直接copy过来。要做一个匹配,那我们这里边又一个STUDENT1ALICE19啊,然后在这里边样例类的这个使用呢,哎,我们直接调用这个STUDENT1ALICE18来做这样的匹配,然后这里大家看到样例类定义的时候,当然前面我们就不需要再去拗了,对吧?样例类嘛,接这里边有它的诞生对象,我们直接创生创建出来就完事了,然后直接运行一下,看看结果是不是跟之前一样。
03:28
Else啊,现在已经19岁了,当然不匹配,那我们改回到18岁看一看。果然是爱丽丝18是完全匹配的,哎,所以如果说我们想要去做。对象实例的内容的这样的一个模式匹配的话,那使用样例类就是最为简单最为快捷的方式啊,所以在很多项目当中啊,我们对于呃,当前的这个字段属性都是定义好的这种类类型的话,那一般情况我们都是非踌快捷的把它定义成样例类就可以了。
我来说两句