![Scala编程(第5版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/446/43738446/b_43738446.jpg)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
6.6 自引用
关键字this指向当前执行方法的调用对象,当被用在构造方法里的时候,指向被构造的对象实例。举例来说,我们可以添加一个lessThan方法,以测试给定的Rational对象是否小于某个传入的参数:
![](https://epubservercos.yuewen.com/9944D7/23020655409775506/epubprivate/OEBPS/Images/42832-00-131-4.jpg?sign=1739015095-D5wQl5oPlTZXvT7ZHwlFWFNa3tIJuGdI-0-f5824b4f8c61a1b0cc9f1e385d3ed19a)
在这里,this.numer指向执行lessThan方法调用的对象的分子。也可以省去this前缀,只写numer。这两种表示法是等效的。
再举一个不能省去this前缀的例子,假设我们要给Rational类添加一个max方法,用于返回给定的有理数和参数之间较大的那个:
![](https://epubservercos.yuewen.com/9944D7/23020655409775506/epubprivate/OEBPS/Images/42832-00-132-1.jpg?sign=1739015095-dAHN1qsD01BFupIUm0fd8CwfwlqZuxLw-0-156a06aa1aef01328ced8a23501d664c)
在这里,第一个this是冗余的,完全可以不写this,直接写lessThan(that)。但第二个this代表了当测试返回false时该方法的结果,如果不写this,就没有可返回的结果了。