O'Reilly係列暢銷叢書!廣大學者讀完後愛不釋手!
《快學Scala》試圖打破教條,從以下三個方麵實現突圍:
1)不馬上跳到函數式編程;
2)努力搭建適用於Java/C++程序員的共同基礎;
3)在引入新的概念之前,優先讓用戶理解可做類比的知識。
本書適閤有一定的Java編程經驗、對Scala感興趣,並希望盡快掌握Scala核心概念和用法的開發者閱讀。
《快學Scala》是一門以Java虛擬機(JVM)為目標運行環境並將麵嚮對象和函數式編程語言的特性結閤在一起的編程語言。你可以使用Scala編寫齣更加精簡的程序,同時充分利用並發的威力。由於Scala運行於JVM之上,因此它可以訪問任何Java類庫並且與Java框架進行互操作。《快學Scala》從實用角度齣發,給齣瞭一份快速的、基於代碼的入門指南。Horstmann以“博客文章大小”的篇幅介紹瞭Scala的概念,讓你可以快速地掌握和應用。實際上手的操作,清晰定義的能力層次,從初級到專傢級,全程指導。
Cay S.Horstmann,是《Java核心技術》捲1和捲2第8版(Sun Microsystems齣版社2008年齣版)的主要作者,除此之外,他還著有其他十多本麵嚮專業程序員和計算機科學專業學生的書籍。
譯者序
序
前言
作者簡介
第1章 基礎A1
1.1 Scala解釋器
1.2聲明值和變量
1.3常用類型
1.4算術和操作符重載
1.5調用函數和方法
1.6 apply方法
1.7 Scaladoc
練習
第2章 控製結構和函數A1
2.1 條件錶達式
2.2語句終止
2.3塊錶達式和賦值
2.4輸入和輸齣
2.5循環
2.6高級for循環和for推導式
2.7函數
2.8默認參數和帶名參數L1
2.9變長參數L1
2.10過程
2.11懶值L1
2.12異常
練習
第3章 數組相關操作A1
3.1定長數組
3.2變長數組:數組緩衝
33遍曆數組和數組緩衝
3.4數組轉換
3.5常用算法
3.6解讀Scaladoc
3.7多維數組
3.8與Java的互操作
練習
第4章 映射和元組A1
4.1構造映射
4.2獲取映射中的值
4.3更新映射中的值
4.4迭代映射
4.5 已排序映射
4.6與Java的互操作
4.7元組
4.8拉鏈操作
練習
第5章 類A1
5.1簡單類和無參方法
52帶getter和setter的屬性
5.3 隻帶getter的屬性
5.4對象私有字段
5.5 Bean屬性L1
5.6輔助構造器
5.7主構造器
5.8嵌套類L1
練習
第6章 對象A1
6.1單例對象
6.2伴生對象
6.3擴展類或特質的對象
6.4 apply方法
6.5應用程序對象
6.6枚舉
練習
第7章 包和引入A1
7.1包
7.2作用域規則
7.3串聯式包語句
7.4文件頂部標記法
7.5包對象
7.6包可見性
7.7引入
7.8 任何地方都可以聲明引入
7.9重命名和隱藏方法
7.10隱式引入
練習
第8章 繼承A1
8.1擴展類
8.2重寫方法
8.3類型檢查和轉換
84受保護字段和方法
8.5超類的構造
8.6重寫字段
8.7匿名子類
8.8抽象類
8.9抽象字段
8.10構造順序和提前定義L3
8.11 Scala繼承層級
8.12對象相等性L1
練習
第9章 文件和正則錶達式A1
9.1讀取行
9.2讀取字符
9.3讀取詞法單元和數字
9.4從URL或其他源讀取
9.5讀取二進製文件
9.6寫入文本文件
9.7訪問目錄
9.8序列化
9.9進程控製A2
9.10正則錶達式
9.11正則錶達式組
練習
第10章 特質L1
10.1為什麼沒有多重繼承
10.2當做接口使用的特質
10.3帶有具體實現的特質
10.4帶有特質的對象
10.5疊加在一起的特質
10.6在特質中重寫抽象方法
10.7當做富接口使用的特質
10.8特質中的具體字段
10.9特質中的抽象字段
10.10特質構造順序
10.11初始化特質中的字段
10.12擴展類的特質
10.13自身類型L2
10.14背後發生瞭什麼
練習
……
第11章 操作符L1
第12章 高階函數L1
第13章 集閤A2
第14章 模式匹配和樣例類A2
第15章 注解A2
第16章 XML處理A2
第17章 類型參數L2
第18章 高級類型L2
第19章 解析A3
第20章 ActorA3
第21章 隱式轉換和隱式參數L3
第22章 定界延續L3
詞匯錶
索引
你也可以在命令行中使用這些名稱:
scalac —Xelide—below INFO myprog.scala
如果不指定—Xelide—below標誌,那些被注解的值低於1000的方法會被省略,剩下SEVERE的方法和斷言,但會去掉所有警告。
說明:ALL和OFF級彆可能會讓人感到睏惑。注解@elide(ALL)錶示方法總是被省略,而@elide(OFF)錶示方法永不被省略。但—Xelide—below OFF的意思是要省略
所有方法,而—Xelide—below ALL的意思是什麼都不要省略。這就是後來又增加瞭MAXIMUM和MINIMUM的原因。
Predef模塊塊定義瞭一個可被忽略的assert方法。例如,我們可以寫:
def makeMap (keys: Seq(String), values: Seq(String)) ={assert (keys.length==values.length, """"lengths don't match”)}
如果我們用不匹配的兩個參數來調用該方法,則assert方法將拋齣AssertionError,報錯消息為“assertion failed: lengths don't match”。
如果要禁用斷言,可以用—Xelide—below 2001或—Xelide—below MAXIMUM。注意在缺省情況下斷言不會被禁用。相比Java斷言,這是個受歡迎的改進。
注意:對被省略的方法調用,編譯器會幫我們替換成Unit對象。如果你用到瞭 被省略方法的返迴值,則一個ClassCastException會被拋齣。最好隻對那些沒有返迴值的方法使用@elidable注解。
……
Java和C++的進化速度已經大不如前,那些樂於使用更現代的語言特性的程序員們正在將眼光移嚮他處。Scala是個很有吸引力的選擇;事實上,在我看來,對於想要突破和超越Java或C++的程序員而言,Scala是最具吸引力的一個。Scala的語法十分簡潔,相比Java的樣闆代碼,Scala讓人耳目一新。Scala運行於Java虛擬機之上,讓我們可以使用現成的海量類庫和工具。它在擁抱函數式編程的同時,並沒有廢棄麵嚮對象,使你得以逐步瞭解和學習一種全新的編程範式。Scala解釋器可讓你快速運行實驗代碼,這使得學習Scala的過程頗為輕鬆愜意。最後,同時也是很重要的一點是,Scala是靜態類型的,編譯器能夠幫我們找齣大部分錯誤,這樣一來,這些錯誤就不至於要等到程序運行起來以後纔被發現(或未被發現),造成時間上的浪費。
本書是寫給那些對於立即開始Scala編程有急切渴望的讀者的。我假定你懂Java、C#或C++,並且我也不會去解釋變量、循環或類這些基本概念。我不去窮舉Scala的所有特性,不會宣傳某一種範式比另一種更優越,也不會用冗長的、過於機巧的示例來摺磨你。與此相反,你將會以緊湊的篇幅得到你想要的信息,可以根據需要選擇閱讀和復習。
Scala是一門內容很豐富的語言,不過你並不需要知道它的所有細節,就已經可以有效地使用瞭。Scala的創始人MartinOdersky對應用程序開發工程師和類庫設計人員所需的專業知識技能的層級進行瞭定義。
我希望你通過本書享受到學習Scala的樂趣。如果你發現瞭錯誤或者有任何改進建議。在那裏,你也能找到指嚮包含本書全部代碼示例的打包文件的鏈接。
在此特彆感謝Dmitry Kirsanov和AlinaKirsanova將我的手稿從XHTML轉換成如此漂亮的排版形式,讓我可以將注意力集中在內容而不是在格式調整上。每個作者都應享受這種待遇!
參與本書審稿的人員有:Adrian Cumiskey、Mike Davis、Rob Dickens、Daniel
Sobral、Craig Tataryn、David Walend、WilliamWheeler。非常感謝你們的評價和建議!
最後,一如既往,感謝我的編輯Greg Doench,感謝他對我撰寫本書的鼓勵和貫穿於整個過程當中的洞察力。
這本書我算是深度體驗瞭一段時間瞭,原本對Scala瞭解不多,抱著“快速上手”的心態入手的。翻開第一頁,就被作者那種直觀、實用的講解方式吸引住瞭。不像有些書上來就堆砌晦澀的概念,這本書更像是和一位經驗豐富的開發者坐在一起,一邊喝著咖啡,一邊聊著Scala那些最核心、最常用的特性。舉例都特彆貼閤實際開發場景,比如在講函數式編程的時候,並沒有空泛地解釋“高階函數”是什麼,而是直接給齣瞭一個如何在實際項目中簡化復雜邏輯的例子,那個瞬間,我感覺“啊,原來Scala可以這麼寫!”,之前的很多疑惑一下子就解開瞭。而且,書中穿插的那些“小技巧”和“最佳實踐”更是錦上添花,很多都是我之前在網上搜半天都找不到的寶藏信息。它沒有試圖把Scala的所有細節都講透,但它精準地抓住瞭學習者最需要掌握的那部分,用最精煉的語言和最生動的例子呈現齣來,確實做到瞭“快學”這個目標。感覺學完之後,至少能夠信心滿滿地開始參與Scala項目瞭,不再是那個對著代碼一臉茫茫然的新手。
評分拿到這本《快學Scala》的時候,我本來就沒抱太大的期望,想著大概就是那種泛泛而談,或者抄襲網上零散資料的“速成”讀物。然而,當我真正靜下心來閱讀後,纔發現自己錯得離譜。這本書最大的亮點在於它的“結構化”和“循序漸進”。它沒有把所有東西一股腦地扔給你,而是將Scala的學習過程分解成瞭一個個邏輯清晰、層層遞進的模塊。從最基礎的語法,到對象、集閤,再到函數式編程的核心理念,每一步都像是給你的大腦打下瞭一個堅實的地基,讓你能夠承載更復雜的知識。特彆喜歡它處理並發和Actor模型的那部分,用一種非常易於理解的方式,將這些在其他語言中可能顯得非常抽象的概念,變得觸手可及。書中提供的一些代碼片段,雖然不長,但都經過瞭精心設計,能夠高效地展示某個特性。讓我印象深刻的是,作者在講解過程中,總會適時地穿插一些“為什麼”和“這樣做的好處”,而不是僅僅告訴你“怎麼做”。這種深度的解釋,對於理解Scala的設計哲學至關重要。
評分作為一名有著多年Java經驗的開發者,轉嚮Scala一直是我的一個目標,但一直找不到閤適的敲門磚。《快學Scala》這本書,可以說是完全擊中瞭我的痛點。它並沒有迴避Scala與Java的差異,反而很巧妙地將兩者進行瞭對比,讓我能夠更快地理解Scala的一些新概念是如何解決Java中一些固有的痛點,或者說提供瞭更優雅的解決方案。例如,在講解Option類型時,它就清晰地闡述瞭為什麼Option比Java的null檢查更為安全和便捷,並且通過一係列的範例,讓我看到瞭如何在實際代碼中規避NPE(空指針異常)。書中對於模式匹配的講解也尤為精彩,讓我這個Java老司機第一次領略到瞭代碼的“簡潔之美”和“錶達力”。此外,對於隱式轉換和類型類這些相對高級的概念,書中也進行瞭相對淺顯但又不失準確的介紹,為我後續深入學習打下瞭基礎。這本書給我最大的感受是:它不是一本“從零開始”的Scala入門書,而是一本“從熟悉Java到精通Scala”的加速器。
評分坦白說,我之前也接觸過幾本關於Scala的書籍,但總覺得它們要麼過於理論化,要麼過於側重某個特定領域,很難讓我形成一個完整的知識體係。直到我讀瞭《快學Scala》,纔真正找到瞭“對味”的書。《快學Scala》的作者在知識點的選取上非常“老練”,他沒有貪多求全,而是精準地抓住瞭Scala最核心、最常用,也是最能體現其優勢的特性。例如,在介紹麵嚮對象和函數式編程融閤的部分,作者就非常有技巧地展示瞭Scala是如何將兩者的優點結閤得天衣無縫的,讓我在理解和應用上都豁然開朗。而且,本書對於並發編程的講解,更是令我印象深刻。作者用清晰的思路和實用的代碼示例,將Actor模型等並發機製講解得深入淺齣,讓我這個對並發一直有些畏懼的開發者,也敢於去嘗試和應用瞭。這本書的價值在於,它在保證學習效率的同時,並沒有犧牲知識的深度和廣度,它像一把鑰匙,為我打開瞭Scala世界的許多扇門。
評分我是一名初入編程領域的新人,選擇《快學Scala》這本書,純粹是因為它的名字聽起來“友好”。沒想到,這份“友好”貫穿瞭整本書。作者的語言風格非常平實,沒有那些故弄玄虛的術語,讀起來就像是在聽一位耐心十足的老師講解。即使是初學者可能覺得很難理解的“特質”(Traits)或者“高階函數”,作者也都用非常生活化的比喻來解釋,讓我能夠聯想到一些我熟悉的事物,從而理解其背後的邏輯。書中提供的練習題雖然不至於非常復雜,但都是恰到好處地檢驗瞭我對前麵知識點的掌握程度,而且每道題的解析都寫得很詳細,讓我即使做錯瞭,也能明白錯在哪裏,下次該怎麼避免。讓我特彆感動的是,書中還提到瞭如何搭建Scala的開發環境,以及一些基本的調試技巧,這些對於一個剛起步的新手來說,簡直太實用瞭。這本書讓我相信,學習Scala並沒有想象中那麼睏難,它是一條充滿趣味的學習之路。
評分為瞭研究高並發而買的,希望思想可以通用!
評分簡單易懂,講解詳細,入門經典
評分多讀書,少看手機,說一百遍。。。
評分一直在京東買書,很劃算,搞活動買瞭不少,慢慢看吧,一點一點看
評分印刷和排版是我最近兩年買的書中最好的瞭
評分京東購物方便快捷,實惠,滿意。
評分618買瞭好多東西,領券購物相當劃算。
評分好書,不多說,買就對瞭!
評分看瞭一部分瞭,個人認為這是一本很棒的書,理論實踐結閤,我從中學到瞭很多,受益匪淺。120個贊。
本站所有內容均為互聯網搜尋引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度,google,bing,sogou 等
© 2025 book.cndgn.com All Rights Reserved. 新城书站 版權所有