Scala速學版(第3版)
凱·S. 霍斯特曼(Cay S. Horstmann)
相關主題
商品描述
本書是一本系統地介紹Scala語言的入門圖書,針對Scala 3進行了全面的更新,不僅覆蓋了Scala語言的基礎知識,而且涵蓋了許多更復雜的概念,並最終深入到非常高級的內容。
本書共分20章,首先介紹了Scala語言的基礎概念,以及控制結構和函數、數組操作、映射、Option、元組、類、對象和枚舉、包、導入和導出、繼承、文件和正則表達式等關鍵概念;其次介紹了特質、運算符、高階函數、容器、模式匹配、註解、Future、類型參數、高級類型、上下文抽象和類型級編程等高級內容。每章都標記了一個級別標簽,告訴你本章的難易程度,以及它是面向應用程序員還是庫設計者。本書以緊湊的形式呈現內容,提供了許多實用的示例代碼,還給出了基於作者實際經驗的提示、註意和警告。
本書適合有一定編程經驗、對Scala感興趣,並希望盡快掌握Scala核心概念和用法的開發者閱讀。
作者簡介
凯·S. 霍斯特曼(Cay S. Horstmann)是《Java核心技术速学版(第3版)》(Core Java for the Impatient, Third Edition)的作者,也是 Core Java, Volumes I and II, Twelfth Edition 的主要作者,他还为专业编程人员和计算机科学专业的学生撰写了十多本书。他是美国圣何塞州立大学计算机科学专业的荣誉退休教授,也是一名Java Champion。
目錄大綱
第 1 章 基礎 A1 ................................. 1
1.1 Scala 解釋器 .................................... 1
1.2 聲明值和變量 ..................................... 3
1.3 常用類型 ........................................... 4
1.4 算術和運算符重載 ............................... 5
1.5 關於調用方法的更多內容 ...................... 6
1.6 apply 方法 ....................................... 7
1.7 Scaladoc ........................................ 8
練習 ....................................................... 11
第 2 章 控制結構和函數 A1 ................ 12
2.1 條件表達式 ...................................... 12
2.2 語句終止 ........................................ 14
2.3 塊表達式和賦值 ............................... 15
2.4 輸入和輸出 ..................................... 16
2.5 循環 .............................................. 17
2.6 關於 for 循環的更多內容 ................... 19
2.7 函數 .............................................. 20
2.8 默認參數和命名參數 L1 ...................... 21
2.9 可變參數 L1 ..................................... 22
2.10 主函數 .......................................... 23
2.11 無參函數 ....................................... 23
2.12 惰性求值 L1 ................................... 24
2.13 異常 ............................................. 25
練習 ...................................................... 27
第 3 章 數組操作 A1 ......................... 29
3.1 定長數組......................................... 29
3.2 變長數組:數組緩沖區 ...................... 30
3.3 遍歷數組和數組緩沖區 ...................... 31
3.4 轉換數組 ........................................ 31
3.5 常用算法 ........................................ 33
3.6 解讀 Scaladoc ............................... 34
3.7 多維數組 ........................................ 35
3.8 與 Java 的互操作 ............................ 35
練習 ...................................................... 36
第 4 章 映射、Option 和元組 A1 ....... 38
4.1 構造映射......................................... 38
4.2 訪問映射值 ..................................... 39
4.3 更新映射值 ..................................... 39
4.4 遍歷映射 ........................................ 40
4.5 鏈接和排序映射 ............................... 41
4.6 與 Java 的互操作 ............................ 41
4.7 Option 類型 ................................... 42
4.8 元組 .............................................. 43
4.9 拉鏈操作 ........................................ 44
練習 ...................................................... 44
第 5 章 類 A1 ................................. 46
5.1 簡單類和無參方法 ............................. 46
5.2 帶 getter 和 setter 的屬性 ................ 47
5.3 僅帶 getter 的屬性 .......................... 49
5.4 私有字段 ........................................ 50
5.5 輔助構造函數 .................................. 51
5.6 主構造函數 ..................................... 52
5.7 嵌套類 L1 ........................................ 54
練習 ...................................................... 55
第 6 章 對象和枚舉 A1 ...................... 57
6.1 單例............................................... 57
6.2 伴生對象 ........................................ 58
6.3 擴展類或特質的對象 ......................... 58
6.4 apply 方法 .................................... 59
6.5 應用程序對象 .................................. 60
6.6 枚舉 .............................................. 60
練習 ...................................................... 62
第 7 章 包、導入和導出 A1 ................ 63
7.1 包.................................................. 63
7.2 包作用域嵌套 .................................. 64
7.3 鏈式包子句 ..................................... 65
7.4 文件頂部表示法 ............................... 65
7.5 包級函數和變量 ............................... 66
7.6 包可見性 ........................................ 66
7.7 導入 .............................................. 67
7.8 導入無處不在 .................................. 67
7.9 重命名和隱藏成員 ............................ 68
7.10 隱式導入 ....................................... 68
7.11 導出 ............................................. 69
練習 ...................................................... 69
第 8 章 繼承 A1 ............................... 71
8.1 繼承類............................................ 71
8.2 重寫方法 ........................................ 72
8.3 類型檢查和強制轉換 ......................... 72
8.4 超類的構造 ..................................... 73
8.5 匿名子類 ........................................ 74
8.6 抽象類 ........................................... 74
8.7 抽象字段 ........................................ 75
8.8 重寫字段 ........................................ 75
8.9 開放類和密封類 ............................... 76
8.10 受保護的字段和方法 ........................ 77
8.11 構造順序 ....................................... 77
8.12 Scala 繼承層級結構 ....................... 78
8.13 對象相等性 L1 ................................ 80
8.14 多元相等性 L2 ................................ 81
8.15 值類 L2 ......................................... 82
練習 ...................................................... 83
第 9 章 文件和正則表達式 A1............. 85
9.1 讀取行............................................ 85
9.2 讀取字符 ........................................ 86
9.3 讀取詞法單元和數字 ......................... 86
9.4 從 URL 和其他源讀取 ....................... 87
9.5 寫入文件 ........................................ 87
9.6 訪問目錄 ........................................ 88
9.7 序列化 ........................................... 88
9.8 進程控制 A2 .................................... 89
9.9 正則表達式 ..................................... 90
9.10 正則表達式組 ................................. 92
練習 ...................................................... 93
第 10 章 特質 L1 ............................. 94
10.1 為何沒有多重繼承? ........................ 94
10.2 作為接口的特質 .............................. 95
10.3 帶具體方法的特質 ........................... 96
10.4 富接口的特質 ................................. 97
10.5 具有特質的對象 .............................. 97
10.6 分層特質....................................... 98
10.7 重寫特質中的抽象方法 ..................... 99
10.8 特質中的具體字段 ........................... 99
10.9 特質中的抽象字段 ......................... 100
10.10 特質構造順序 .............................. 101
10.11 帶參數的特質構造函數 .................. 102
10.12 擴展類的特質 ............................. 103
10.13 底層機制 ................................... 104
10.14 透明特質 L2 ............................... 105
10.15 自類型 L2 .................................. 106
練習 .................................................... 107
第 11 章 運算符 L1 .......................... 110
11.1 標識符 ......................................... 110
11.2 中綴運算符 ................................... 111
11.3 一元運算符 ................................... 112
11.4 賦值運算符 ................................... 113
11.5 優先級 ......................................... 113
11.6 關聯性 ......................................... 114
11.7 apply 和 update 方法 ................... 114
11.8 unapply 方法 L2 ........................... 114
11.9 unapplySeq 方法 L2 ...................... 116
11.10 unapply 和 unapplySeq 方法的替代形式 L3 ........... 116
11.11 動態調用 L2 ................................. 117
11.12 類型安全的選擇和應用 L2 ............... 119
練習 ..................................................... 121
第 12 章 高階函數 L1...................... 123
12.1 函數作為值 .................................. 123
12.2 匿名函數 ..................................... 124
12.3 函數參數 ..................................... 125
12.4 參數推斷 ..................................... 126
12.5 有用的高階函數 ............................ 126
12.6 閉包 ........................................... 127
12.7 與 Lambda 表達式的互操作性 ........ 128
12.8 柯里化 ........................................ 129
12.9 組合、柯里化和元組化的方法 .......... 129
12.10 控制抽象 ................................... 130
12.11 非本地返回 .................................. 131
練習 .................................................... 132
第 13 章 容器 A2 ........................... 134
13.1 主要的容器特質 ............................ 134
13.2 可變和不可變容器 ......................... 136
13.3 序列 ........................................... 136
13.4 列表........................................... 137
13.5 集合 ........................................... 138
13.6 添加或刪除元素的運算符 ................ 139
13.7 常用方法 ...................................... 141
13.8 映射函數..................................... 143
13.9 歸約、折疊和掃描 A3 ..................... 144
13.10 拉鏈操作 ................................... 146
13.11 迭代器 ...................................... 147
13.12 惰性列表 A3 ............................... 148
13.13 與 Java 容器的互操作性 .............. 150
練習 ..................................................... 151
第 14 章 模式匹配 A2 ...................... 153
14.1 更好的 switch............................. 153
14.2 守衛........................................... 154
14.3 模式中的變量 ............................... 154
14.4 類型模式..................................... 155
14.5 Matchable 特質 .......................... 156
14.6 匹配數組、列表和元組 ................... 157
14.7 提取器........................................ 158
14.8 變量聲明中的模式 ......................... 159
14.9 for 表達式中的模式 ...................... 160
14.10 樣例類 ....................................... 161
14.11 匹配嵌套結構.............................. 162
14.12 密封類 ...................................... 163
14.13 參數化枚舉 ................................ 164
14.14 偏函數 A3 .................................. 165
14.15 case 子句中的中綴表示法 L2 ......... 166
練習 .................................................... 167
第 15 章 註解 A2............................ 169
15.1 什麽是註解? ............................... 169
15.2 註解放置 ..................................... 170
15.3 註解參數 ..................................... 170
15.4 Java 特性的註解 .......................... 171
15.4.1 Bean 屬性............................. 171
15.4.2 序列化 .................................. 172
15.4.3 受檢異常 ............................... 172
15.4.4 可變參數 ............................... 172
15.4.5 Java 修飾符 ......................... 173
15.5 優化註解 ..................................... 173
15.5.1 尾遞歸 ................................... 173
15.5.2 惰性值 .................................. 174
15.6 錯誤和警告註解 ............................ 175
15.7 註解聲明 ..................................... 176
練習 .................................................... 177
第 16 章 Future A2 ...................... 179
16.1 在 Future 中運行任務 ................... 179
16.2 等待結果 ...................................... 181
16.3 Try 類 ....................................... 182
16.4 回調........................................... 183
16.5 組合 Future 任務 ......................... 183
16.6 其他 Future 轉換 ......................... 185
16.7 Future 對象的方法 ....................... 187
16.8 Promise ................................... 188
16.9 執行上下文 .................................. 189
練習 .................................................... 190
第 17 章 類型參數 L2 ..................... 192
17.1 泛型類 ........................................ 192
17.2 泛型函數 ..................................... 193
17.3 類型變量的邊界 ............................ 193
17.4 上下文邊界 .................................. 194
17.5 ClassTag 上下文邊界 ................... 195
17.6 多重邊界 ..................................... 195
17.7 類型約束 L3 ................................. 195
17.8 型變........................................... 196
17.9 協變和逆變位置 ............................ 197
17.10 對象不能是泛型 .......................... 199
17.11 通配符....................................... 199
17.12 多態函數 ................................... 200
練習 .................................................... 201
第 18 章 高級類型 L2 ..................... 203
18.1 聯合類型 ..................................... 203
18.2 相交類型 ..................................... 204
18.3 類型別名 ..................................... 205
18.4 結構類型..................................... 206
18.5 字面量類型 .................................. 207
18.6 單例類型操作符 ............................ 208
18.7 抽象類型..................................... 210
18.8 依賴類型...................................... 211
18.9 抽象類型邊界 ............................... 212
練習 .................................................... 213
第 19 章 上下文抽象 L3 ................... 216
19.1 上下文參數 .................................. 216
19.2 上下文參數的更多內容 ................... 217
19.3 聲明 given 實例 .......................... 219
19.4 for 和 match 表達式中的 given..... 221
19.5 導入 given ................................. 221
19.6 擴展方法..................................... 222
19.7 擴展方法的查找位置 ...................... 223
19.8 隱式轉換..................................... 225
19.9 隱式轉換規則 ............................... 226
19.10 導入隱式轉換 ............................. 227
19.11 上下文函數 ................................ 227
19.12 證據 ......................................... 229
19.13 @implicitNotFound 註解 .......... 230
練習 .................................................... 231
第 20 章 類型級編程 L3 ................. 233
20.1 匹配類型 ..................................... 233
20.2 異構列表 .................................... 234
20.3 字面量類型算術運算 ..................... 236
20.4 內聯代碼 .................................... 238
20.5 類型類 ....................................... 240
20.6 鏡像 .......................................... 242
20.7 類型類派生 ................................. 244
20.8 高級類型 .................................... 245
20.9 類型 Lambda 表達式 ................... 247
20.10 宏簡介...................................... 248
練習 .................................................... 251