- Scala編程(第5版)
- (德)馬丁·奧德斯基等
- 2683字
- 2022-05-06 15:51:26
引言
本書是Scala編程語言的教程,由直接參與Scala開發的人來編寫。我們的目標是讓讀者通過本書,能夠了解和掌握成為高產的Scala程序員需要知道的一切。書中的所有示例均能通過Scala 3.0.0的編譯。
誰讀本書
本書主要的目標讀者是希望學習如何使用Scala編程的人。如果你想在你的下一個項目中使用Scala,本書就是為你準備的。除此之外,本書對于那些想要學習新知識從而開闊自己眼界的程序員也同樣有益。比方說,如果你是Java程序員,那么閱讀本書,你將接觸到來自函數式編程領域和高階面向對象領域的許多概念。我們相信,通過學習Scala及Scala背后的觀念,你將成為一名更好的程序員。
我們假定你擁有常規的編程知識。雖然Scala作為用于入門的編程語言并沒有什么不妥,但是本書并不適用于(從零開始)學習編程。
另一方面,閱讀本書并不要求讀者具備某項具體的編程語言的知識。我們當中大部分人都是在Java平臺上使用Scala的,但本書并不假定你了解Java本身。不過,我們預期大部分讀者都熟悉Java,因此我們有時會將Scala與Java做對比,幫助這些讀者理解它們之間的區別。
如何使用本書
本書的主旨是教學,我們推薦的閱讀順序是從前到后,依次閱讀各章。我們盡可能每次只引入一個主題,同時只使用已經介紹過的主題來解釋這個新的主題。因此,如果你跳過前面的章節,則可能會遇到某些并不十分理解的概念。只要你按順序閱讀,就會發現掌握Scala是循序漸進、順理成章的。
如果你看到某個不明白的詞匯,記得查看術語表。許多讀者都喜歡快速瀏覽特定的章節,這沒有問題,目錄能幫助你隨時找回閱讀的坐標和方位。
當你讀完本書以后,還可以繼續將其當作語言參考書。Scala編程語言有一份正式的語言規范,但語言規范強調的是精確性,而不是可讀性。雖然本書不會覆蓋Scala的每一個細節,但是它也足夠全面,應該能夠在你逐漸成為Scala編程能手的過程中,承擔起語言參考書的職責。
如何學習Scala
通讀本書,你可以學到很多關于Scala的知識。不過,如果你做一些額外的嘗試,則可以學得更快,更徹底。
首先,利用好包含在本書中的代碼示例。手動將這些代碼示例錄入,有助于在腦海中逐行過一遍代碼。尤其是在錄入過程中嘗試一些變化,會非常有趣,這也能讓你確信自己真的理解了它們背后的工作原理。
其次,時常訪問在線論壇。這樣,你和其他Scala愛好者可以互相促進。網上有大量的郵件列表、討論組、聊天室、Wiki和Scala特定主題的訂閱。花費一些時間,找到滿足你需求的內容,你會在小問題上花更少的時間,有更多的時間和精力投入更深入、更重要的問題中。
最后,一旦你讀得足夠多,就可以自己啟動一個編程項目。例如,從頭編寫小程序,或者為某個更大的項目開發組件,因為僅僅閱讀并不會讓你走得更遠。
排版和字體規格
當某個術語在正文中首次出現時,我們使用楷體中文和斜體英文顯示它。對于短小的代碼示例,如x + 1,我們使用等寬字體將其內嵌在正文中。對于較長的代碼示例,我們使用等寬字體以如下方式呈現:

當出現交互式shell時,來自shell的響應內容以更輕的字體呈現:

內容概覽
? 第1章,“一門可伸縮的語言”,主要介紹Scala的設計及背后的概念和歷史。
? 第2章,“Scala入門”,介紹了如何使用Scala完成一些基礎的編程任務,但并不深入講解它是如何工作的。本章的目標是讓你可以開始輸入Scala代碼并執行。
? 第3章,“Scala入門(續)”,展示了更多基本的編程任務,幫助你快速上手Scala。學習完本章以后,你應該就能使用Scala完成簡單的腳本型任務了。
? 第4章,“類和對象”,開始深入介紹Scala,描述其基本的面向對象的組成部分,并指導大家如何編譯并運行Scala應用程序。
? 第5章,“基本類型和操作”,介紹了Scala基本類型、字面量和支持的操作,(操作符的)優先級和結合律,以及對應的富包裝類。
? 第6章,“函數式對象”,以函數式(即不可變)的分數為例,更深入地講解Scala面向對象的特性。
? 第7章,“內建的控制結構”,展示了如何使用Scala內建的控制結構:if、while、for、try和match。
? 第8章,“函數和閉包”,給出了對函數的深入介紹,而函數是函數式編程語言最基本的組成部分。
? 第9章,“控制抽象”,展示了如何通過定義自己的控制抽象來對Scala基本的控制結構進行完善和補充。
? 第10章,“組合和繼承”,更進一步探討Scala對面向對象編程的支持。本章的主題不像第4章那么基礎,但在實踐中經常會遇到。
? 第11章,“特質”,介紹了Scala的混入組合機制。本章展示了特質的工作原理,描述了特質的常見用法,并解釋了特質相對于更傳統的多重繼承有哪些改進。
? 第12章,“包、引入和導出”,討論了大規模編程實踐中我們會遇到的問題,包括頂級包,import語句,以及像protected和private那樣的訪問控制修飾符。
? 第13章,“樣例類和模式匹配”,介紹了這組孿生的結構。它們在處理樹形的遞歸數據時非常有用。
? 第14章,“使用列表”,詳細地解釋了列表這個在Scala程序中使用最普遍的數據結構。
? 第15章,“使用其他集合類”,展示了如何使用基本的Scala集合,如列表、數組、元組、集和映射。
? 第16章,“可變對象”,解釋了可變對象,以及Scala用來表示可變對象的語法。本章以一個具體的離散事件模擬案例分析收尾,展示了實踐中可變對象的適用場景。
? 第17章,“Scala的繼承關系”,解釋了Scala的繼承關系,并探討了通用方法和底類型等概念。
? 第18章,“類型參數化”,使用具體的示例解釋了第13章介紹過的信息隱藏的技巧:為純函數式隊列設計的類。本章接下來對類型參數的型變進行了說明,介紹了類型參數化對于信息隱藏的作用。
? 第19章,“枚舉”,介紹了枚舉和代數數據類型(ADT)這組孿生的結構,讓你更好地編寫規則的、開放式的數據結構。
? 第20章,“抽象成員”,描述了Scala支持的各種抽象成員,不僅方法可以被聲明為抽象的,字段和類型也可以。
? 第21章,“上下文參數”,介紹了Scala如何幫助你對函數使用上下文參數。將所有的上下文信息都直接帶入并不是什么難事,但會因此增加很多樣板代碼,上下文參數能幫助你減少一些樣板代碼。
? 第22章,“擴展方法”,介紹了Scala如何讓一個在類定義之外的函數看起來像是類自己定義的那樣的機制。
? 第23章,“類型族”,展示了類型族的若干示例。
? 第24章,“深入集合類”,詳細介紹了Scala集合類庫。
? 第25章,“斷言和測試”,展示了Scala的斷言機制,并介紹了用Scala編寫測試的若干工具,特別是ScalaTest。
資源
在Scala的官方網站中,你可以找到Scala的最新下載文檔和社區資源。如果你需要一份更濃縮的Scala資源列表,則可以訪問本書的網站(見網址列表條目[2])。
源碼
本書的源碼可以從本書的網站下載(ZIP格式),且源碼以Apache 2.0開源許可提供。
勘誤表
雖然本書經過了大量審校,但是疏漏依然不可避免。本書的勘誤表(希望不會很長)可以通過網址列表條目[3]找到。如果你發現了本書的錯誤,請通過上面的地址提交給我們,我們將在后續批次和版本中修正。
- Spring Cloud Alibaba微服務架構設計與開發實戰
- CMDB分步構建指南
- 騰訊iOS測試實踐
- x86匯編語言:從實模式到保護模式(第2版)
- Mastering Ext JS
- Windows Server 2016 Automation with PowerShell Cookbook(Second Edition)
- 青少年信息學競賽
- Swift 4從零到精通iOS開發
- 打開Go語言之門:入門、實戰與進階
- Machine Learning With Go
- Python商務數據分析(微課版)
- Python GUI Programming Cookbook(Second Edition)
- Kohana 3.0 Beginner's Guide
- RESTful Web API Design with Node.js(Second Edition)
- Mastering Linux Kernel Development