- Scala編程(第5版)
- (德)馬丁·奧德斯基等
- 466字
- 2022-05-06 15:51:46
6.9 定義操作符
Rational類目前實現的加法還算可行,但我們可以讓它更好用。你可能會問自己,為什么對于整數或浮點數,可以寫成:

但對于有理數,必須寫成:

或者至少是:

寫成這樣,并沒有很有說服力的原因。有理數不過是與其他數一樣的數。從數學意義上講,有理數甚至比浮點數更自然。為什么不可以用自然的算術操作符來操作有理數呢?Scala允許這樣做。在本章的剩余部分,我們將向你展示如何做到。
第一步是將add替換成通常的那個數學符號。這個做起來很直截了當,因為在Scala中,+是一個合法的標識符。我們可以簡單地定義一個名稱為+的方法,在這么做的同時,完全可以順手實現一個*方法,以執行乘法操作。結果如示例6.4所示。

示例6.4 帶有操作符方法的Rational類
有了這樣的Rational類,可以寫出如下代碼:

與平時一樣,最后一行輸入的操作符語法等同于方法調用。也可以寫成:

不過這并不是那么可讀的。
另一個值得注意的點是,按照Scala的操作符優先級(在5.9節介紹過),對于Rational類來說,*方法會比+方法綁得更緊。換句話說,涉及Rational對象的+和*操作,其行為會像我們預期的那樣。比如,x + x * y 會被當作x + (x * y)執行,而不是(x + x) * y:

推薦閱讀
- Learning PostgreSQL
- 編寫高質量代碼:改善C程序代碼的125個建議
- 快速入門與進階:Creo 4·0全實例精講
- Visual Studio Code 權威指南
- BeagleBone Robotic Projects(Second Edition)
- Kotlin Programming By Example
- 分布式架構原理與實踐
- 高效使用Greenplum:入門、進階與數據中臺
- 官方 Scratch 3.0 編程趣味卡:讓孩子們愛上編程(全彩)
- WCF技術剖析(卷1)
- Web前端測試與集成:Jasmine/Selenium/Protractor/Jenkins的最佳實踐
- Java EE實用教程
- Microsoft Windows Identity Foundation Cookbook
- INSTANT EaselJS Starter
- Eclipse開發(學習筆記)