Scala Rational對(duì)象的toString方法
前例中當(dāng)Rational實(shí)例被創(chuàng)建之后,解釋器打印輸出“Rational@a0b0f5”。解釋器是通過(guò)調(diào)用Rational對(duì)象的toString方法獲得的這個(gè)看上去有些好玩兒的字串。缺省情況下,Rational類(lèi)繼承了定義在java.lang.Object類(lèi)上的toString實(shí)現(xiàn),只是打印類(lèi)名,一個(gè)@符號(hào)和一個(gè)十六進(jìn)制數(shù)。toString的結(jié)果主要是想通過(guò)提供可以用在除錯(cuò)時(shí)的語(yǔ)句打印,日志消息,測(cè)試錯(cuò)誤報(bào)告和解釋器,除錯(cuò)器輸出的信息來(lái)嘗試對(duì)程序員提供幫助。目前toString提供的結(jié)果不會(huì)特別有用,因?yàn)樗鼪](méi)有給出任何它被調(diào)用的Rational數(shù)值的任何線索。更有用的toString實(shí)現(xiàn)應(yīng)該打印出Rational的分子和分母。你可以通過(guò)在Rational類(lèi)里增加toString方法的方式重載:override缺省的實(shí)現(xiàn),如:
51CTO編輯推薦:Scala編程語(yǔ)言專(zhuān)題
- class Rational(n: Int, d: Int) {
- override def toString = n +"/"+ d
- }
方法定義前的override修飾符標(biāo)示了之前的方法定義被重載;第10章會(huì)更進(jìn)一步說(shuō)明。現(xiàn)在分?jǐn)?shù)顯示得很漂亮了,所以我們?nèi)サ袅饲耙粋€(gè)版本的Rational類(lèi)里面的println除錯(cuò)語(yǔ)句。你可以在解釋器里測(cè)試Rational的新行為:
- scala> val x = new Rational(1, 3)
- x: Rational = 1/3
- scala> val y = new Rational(5, 7)
- y: Rational = 5/7
【相關(guān)閱讀】