官术网_书友最值得收藏!

  • Scala編程(第5版)
  • (德)馬丁·奧德斯基等
  • 619字
  • 2022-05-06 15:51:43

5.11 結語

本章想告訴你的主要是Scala的操作符其實是方法調用,以及Scala的基礎類型可以被隱式轉換成富包裝類,從而擁有更多實用的方法。下一章將向你展示什么叫作用函數式的編程風格設計對象,并相應地給出本章你看到的某些操作符的全新實現。

[1]包(package)這個概念在第2章的第1步簡單介紹過,并且會在第12章中詳細介紹。

[2]譯者注:自Scala 2.13起,Scala編譯器允許整數字面量以0開頭,但不會將它們當作八進制處理,只是簡單地忽略這些前置的0,實際效果為十進制。

[3]譯者注:原作者在這里特意用了一個雙關語,英文中“字面量”(literal)和“字面上”“確實地”“跟真的一樣”(literally)是由同一個詞派生的。

[4]重載的方法名稱相同但參數類型不同。方法重載在6.11節會有更詳細的介紹。

[5]在未來版本的Scala中,對于以非符號命名的方法(譯者注:即常規命名的方法),只有在聲明時使用了infix修飾符的情況下才允許被當作操作符。

[6]譯者注:自Scala 2.13起,使用后綴表示法需要引入scala.language.postfixOps。

[7]不過這并不是“世界末日”,還存在一個非常小的概率,即你的*p會被當作C++那樣正常編譯。

[8]按位異或方法對其操作元執行按位異或操作,對相同的位交出0,對不同的位交出1。因此0011^0101會交出0110。

[9]整數類型最左邊的位是符號位。如果最左邊的一位是1,這個數就是負數;如果是0,這個數就是正數。

[10]自動檢查并不會關心右邊是否為null,不過任何講道理的equals方法都應該對入參為null的情況返回false。

[11]至此你應該知道,Scala編譯器會把這段代碼翻譯成(bills.!*&^%~(code)).!()。(譯者注:在英文語境下,這種表示法常用于替代臟話。)

主站蜘蛛池模板: 翁牛特旗| 新丰县| 固阳县| 通榆县| 永州市| 彰化市| 临清市| 黄陵县| 晋宁县| 三穗县| 易门县| 临夏市| 阿瓦提县| 文水县| 阳谷县| 永修县| 库尔勒市| 镇雄县| 大竹县| 黄石市| 衡东县| 宜丰县| 海伦市| 兴安盟| 武功县| 德昌县| 开化县| 开鲁县| 恩施市| 遂昌县| 玉溪市| 惠水县| 怀安县| 双桥区| 南京市| 昌都县| 泗阳县| 精河县| 镇原县| 南昌市| 宜章县|