Scala程式設計(第2版)

Scala程式設計(第2版)

《Scala程式設計(第2版)》是2020年3月人民郵電出版社出版的圖書,作者是[美]萬普勒(Dean Wampler)、佩恩(Alex Payne)。

基本介紹

  • 中文名:Scala程式設計(第2版)
  • 作者:[美]萬普勒(Dean Wampler)、佩恩(Alex Payne)
  • 出版社:人民郵電出版社
  • 出版時間:2020年3月
  • 頁數:473 頁
  • 定價:109 元
  • 開本:16 開
  • 裝幀:平裝
  • ISBN:9787115416810
內容簡介,圖書目錄,

內容簡介

本書通過大量的代碼示例,全面介紹Scala這門針對JVM的程式語言,向讀者展示了如何高效地利用Scala語言及其生態系統,同時解釋了為何Scala是開發高擴展性、以數據為中心的應用程式的理想語言。
本書既適合Scala初學者入門,也適合經驗豐富的Scala開發者參考。

圖書目錄

序 xv
前言 xvii
第 1 章 零到六十:Scala 簡介 1
1.1 為什麼選擇Scala 1
1.1.1 富有魅力的Scala 2
1.1.2 關於Java 8 3
1.2 安裝Scala 3
1.2.1 使用SBT 5
1.2.2 執行Scala 命令行工具 6
1.2.3 在IDE中運行Scala REPL 8
1.3 使用Scala 8
1.4 並發 17
1.5 本章回顧與下一章提要 27
第 2 章 更簡潔,更強大 28
2.1 分號 28
2.2 變數聲明 29
2.3 Range 31
2.4 偏函式 32
2.5 方法聲明 33
2.5.1 方法默認值和命名參數列表 33
2.5.2 方法具有多個參數列表 34
2.5.3 Future 簡介 35
2.5.4 嵌套方法的定義與遞歸 38
2.6 推斷類型信息 40
2.7 保留字 44
2.8 字面量 46
2.8.1 整數字面量 46
2.8.2 浮點數字面量 47
2.8.3 布爾型字面量 48
2.8.4 字元字面量 48
2.8.5 字元串字面量 48
2.8.6 符號字面量 50
2.8.7 函式字面量 50
2.8.8 元組字面量 50
2.9  Option、Some和None:避免使用null 52
2.10 封閉類的繼承 53
2.11 用檔案和名空間組織代碼 54
2.12 導入類型及其成員 55
2.12.1 導入是相對的 56
2.12.2 包對象 57
2.13 抽象類型與參數化類型 57
2.14 本章回顧與下一章提要 59
第 3 章 要點詳解 60
3.2 無參數方法 63
3.3 優先權規則 64
3.4 領域特定語言 65
3.5 Scala中的if語句 66
3.6 Scala中的for推導式 67
3.6.1 for循環 67
3.6.2 生成器表達式 67
3.6.3 保護式:篩選元素 67
3.6.4 Yielding 68
3.6.5 擴展作用域與值定義 69
3.7 其他循環結構 70
3.7.1 Scala的while循環 71
3.7.2 Scala中的do-while循環 71
3.8 條件操作符 71
3.9 使用try、catch和final子句 72
3.10 名字調用和值調用 75
3.11 惰性賦值 78
3.12 枚舉 79
3.13 可插入字元串 81
3.14 Trait:Scala語言的接口和“混入” 83
3.15 本章回顧與下一章提要 85
第 4 章 模式匹配 86
4.1 簡單匹配 86
4.2 match中的值、變數和類型 87
4.3 序列的匹配 90
4.4 元組的匹配 94
4.5 case中的guard語句 94
4.6 case類的匹配 95
4.6.1 unapply方法 96
4.6.2 unapplySeq方法 100
4.7 可變參數列表的匹配 101
4.8 正則表達式的匹配 103
4.9 再談case語句的變數綁定 104
4.10 再談類型匹配 104
4.11 封閉繼承層級與全覆蓋匹配 105
4.12 模式匹配的其他用法 107
4.13 總結關於模式匹配的評價 111
4.14 本章回顧與下一章提要 111
第 5 章 隱式詳解 112
5.1 隱式參數 112
5.2 隱式參數適用的場景 115
5.2.1 執行上下文 115
5.2.2 功能控制 115
5.2.3 限定可用實例 116
5.2.4 隱式證據 120
5.2.5 繞開類型擦除帶來的限制 122
5.2.6 改善報錯信息 124
5.2.7 虛類型 124
5.2.8 隱式參數遵循的規則 127
5.3 隱式轉換 128
5.3.1 構建獨有的字元串插入器 132
5.3.2 表達式問題 134
5.4 類型類模式 135
5.5 隱式所導致的技術問題 137
5.6 隱式解析規則 139
5.7 Scala內置的各種隱式 139
5.8 合理使用隱式 146
5.9 本章回顧與下一章提要 146
第 6 章 Scala函式式編程 147
6.1 什麼是函式式編程 148
6.1.1 數學中的函式 148
6.1.2 不可變變數 149
6.2 Scala中的函式式編程 151
6.2.1 匿名函式、Lambda與閉包 152
6.2.2 內部與外部的純粹性 154
6.3 遞歸 154
6.4 尾部調用和尾部調用最佳化 155
6.5 偏套用函式與偏函式 157
6.6 Curry化與函式的其他轉換 158
6.7 函式式編程的數據結構 162
6.7.1 序列 162
6.7.2 映射表 166
6.7.3 集合 168
6.8 遍歷、映射、過濾、摺疊與歸約 168
6.8.1 遍歷 169
6.8.2 映射 170
6.8.3 扁平映射 172
6.8.4 過濾 173
6.8.5 摺疊與歸約 174
6.9 向左遍歷與向右遍歷 178
6.10 組合器:軟體**佳組件抽象 183
6.11 關於複製 186
6.12 本章回顧與下一章提要 188
第 7 章 深入學習for推導式 189
7.1 內容回顧:for推導式組成元素 189
7.2  for推導式:內部機制 192
7.3  for推導式的轉化規則 194
7.4  Option以及其他的一些容器類型 197
7.4.1  Option容器 197
7.4.2  Either:Option類型的邏輯擴展 200
7.4.3  Try類型 205
7.4.4 Scalaz提供的Validation類 206
7.5 本章回顧與下一章提要 209
第 8 章 Scala面向對象編程 210
8.1 類與對象初步 211
8.2 引用與值類型 213
8.3 價值類 214
8.4 父類 217
8.5 Scala的構造器 217
8.6 類的欄位 221
8.6.1 統一訪問原則 223
8.6.2 一元方法 224
8.7 驗證輸入 224
8.8 調用父類構造器(與良好的面向對象設計) 226
8.9 嵌套類型 230
8.10 本章回顧與下一章提要 232
第 9 章 特徵 233
9.1 Java 8中的接口 233
9.2 混入trait 234
9.3 可堆疊的特徵 238
9.4 構造trait 243
9.5 選擇類還是trait 244
9.6 本章回顧與下一章提要 245
第 10 章 Scala對象系統(I) 246
10.1 參數化類型:繼承轉化 246
10.1.1 Hood下的函式 247
10.1.2 可變類型的變異 250
10.1.3 Scala和Java中的變異 252
10.2 Scala的類型層次結構 253
10.3 閒話Nothing(以及Null) 254
10.4  Product、case類和元組 258
10.5  Predef對象 260
10.5.1 隱式轉換 260
10.5.2 類型定義 262
10.5.3 條件檢查方法 263
10.5.4 輸入輸出方法 263
10.5.5 雜項方法 265
10.6 對象的相等 265
10.6.1  equals方法 266
10.6.2  ==和!=方法 266
10.6.3  eq和ne方法 267
10.6.4 數組相等和sameElements方法 267
10.7 本章回顧與下一章提要 268
第 11 章 Scala對象系統(II) 269
11.1 覆寫類成員和trait成員 269
11.2 嘗試覆寫final聲明 272
11.3 覆寫抽象方法和具體方法 272
11.4 覆寫抽象欄位和具體欄位 274
11.5 覆寫抽象類型 280
11.6 無須區分訪問方法和欄位:統一訪問原則 280
11.7 對象層次結構的線性化算法 282
11.8 本章回顧與下一章提要 287
第 12 章 Scala集合庫 288
12.1 通用、可變、不可變、並發以及並行集合 288
12.1.1  scala.collection包 289
12.1.2  collection.concurrent包 290
12.1.3  collection.convert包 291
12.1.4  collection.generic包 291
12.1.5  collection.immutable包 291
12.1.6  scala.collection.mutable包 292
12.1.7  scala.collection.parallel包 294
12.2 選擇集合 295
12.3 集合庫的設計慣例 296
12.3.1  Builder 296
12.3.2  CanBuildFrom 297
12.3.3  Like特徵 298
12.4 值類型的特化 298
12.5 本章回顧與下一章提要 300
第 13 章 可見性規則 301
13.1 默認可見性:公有可見性 301
13.2 可見性關鍵字 302
13.3 Public可見性 303
13.4 Protected可見性 304
13.5 Private可見性 305
13.6 作用域內私有和作用域內受保護可見性 306
13.7 對可見性的想法 312
13.8 本章回顧與下一章提要 313
第 14 章 Scala類型系統(I) 314
14.1 參數化類型 315
14.1.1 變異標記 315
14.1.2 類型構造器 315
14.1.3 類型參數的名稱 315
14.2 類型邊界 315
14.2.1 類型邊界上限 316
14.2.2 類型邊界下限 316
14.3 上下文邊界 320
14.4 視圖邊界 320
14.5 理解抽象類型 322
14.6 自類型標記 325
14.7 結構化類型 329
14.8 複合類型 332
14.9 存在類型 334
14.10 本章回顧與下一章提要 335
第 15 章 Scala 類型系統(II) 336
15.1 路徑相關類型 336
15.1.1 C.this 337
15.1.2 C.super 337
15.1.3 path.x 338
15.2 依賴方法類型 339
15.3 類型投影 340
15.4 值的類型 343
15.4.1 元組類型 343
15.4.2 函式類型 343
15.4.3 中綴類型 343
15.5 Higher-Kinded類型 344
15.6 類型Lambda 348
15.7 自遞歸類型:F-Bounded 多態 350
15.8 本章回顧與下一章提要 351
第 16 章 高 級函式式編程 352
16.1 代數數據類型 352
16.1.1 加法類型與乘法類型 352
16.1.2 代數數據類型的屬性 354
16.1.3 代數數據類型的**後思考 355
16.2 範疇理論 355
16.2.1 關於範疇 356
16.2.2 Functor範疇 356
16.2.3 Monad範疇 360
16.2.4 Monad的重要性 362
16.3 本章回顧與下一章提要 363
第 17 章 並發工具 365
17.1 scala.sys.process包 365
17.2 Future類型 367
17.3 利用Actor模型構造穩固且可擴展的並發套用 371
17.4 Akka:為Scala設計的Actor系統 372
17.5 Pickling和Spores 383
17.6 反應式編程 384
17.7 本章回顧與下一章提要 385
第 18 章 Scala與大數據 386
18.1 大數據簡史 386
18.2 用Scala改善MapReduce 387
18.3 超越MapReduce 392
18.4 數學範疇 393
18.5 Scala數據工具列表 394
18.6 本章回顧與下一章提要 394
第 19 章 Scala動態調用 396
19.1 一個較為激進的示例:Ruby on Rails框架中的ActiveRecord庫 396
19.2 使用動態特徵實現Scala中的動態調用 397
19.3 關於DSL的一些思考 402
19.4 本章回顧與下一章提要 402
第 20 章 Scala的領域特定語言 403
20.1 DSL 示例:Scala中XML和JSON DSL 404
20.2 內部DSL 406
20.3 包含解析組合子的外部DSL 410
20.3.1 關於解析組合子 410
20.3.2 計算工資單的外部DSL 410
20.4 內部DSL與外部DSL:**後的思考 413
20.5 本章回顧與下一章提要 413
第 21 章 Scala工具和庫 414
21.1 命令行工具 414
21.1.1 命令行工具:scalac 414
21.1.2 Scala命令行工具 418
21.1.3 scalap和javap命令行工具 421
21.1.4 scaladoc命令行工具 422
21.1.5 fsc命令行工具 422
21.2 構建工具 422
21.2.1 SBT:Scala標準構建工具 423
21.2.2 其他構建工具 425
21.3 與IDE或文本編輯器集成 425
21.4 在Scala中套用測試驅動開發 426
21.5 第三方庫 427
21.6 本章回顧與下一章提要 429
第 22 章 與Java的互操作 430
22.1 在Scala代碼中使用 Java 名稱 430
22.2 Java泛型與Scala泛型 430
22.3 JavaBean的性質 432
22.4  AnyVal類型與Java原生類型 433
22.5 Java代碼中的Scala名稱 433
22.6 本章回顧與下一章提要 434
第 23 章 應用程式設計 435
23.1 回顧之前的內容 435
23.2 註解 437
23.3 Trait即模組 441
23.4 設計模式 442
23.4.1 構造型模式 443
23.4.2 結構型模式 443
23.4.3 行為型模式 444
23.5 契約式設計帶來更好的設計 446
23.6 帕特農神廟架構 448
23.7 本章回顧與下一章提要 453
第 24 章 元編程:宏與反射 454
24.1 用於理解類型的工具 455
24.2 運行時反射 455
24.2.1 類型反射 455
24.2.2 ClassTag、TypeTag與Manifest 457
24.3 Scala的高 級運行時反射API 458
24.4 宏 461
24.4.1 宏的示例:強制不變性 463
24.4.2 關於宏的**後思考 466
24.5 本章回顧與下一章提要 466
附錄 A 參考文獻 468
作者簡介 473
關於封面 473

相關詞條

熱門詞條

聯絡我們