Scala 編程, 5/e (Programming in Scala 5/e)

高宇翔

買這商品的人也買了...

商品描述

本書由直接參與 Scala 開發的一線人員編寫,深入介紹了 Scala 這門結合面向對象和函數式的編程語言的核心特性和設計取捨。繼第 4 版後,時隔一年,本書迎來重大更新,內容覆蓋 Scala 3.0,對新的縮進語法、並集類型、交集類型、枚舉、代數數據類型、上下文參數、特質參數、擴展方法、類型族等都有詳細介紹。本書適合有一定編程經驗的開發者閱讀,尤其是對 Scala 3.0 新特性感興趣的開發者朋友。即便是不直接使用 Scala 的讀者,也能從本書中學到大量關於函數式和麵向對象的編程概念和技巧。

目錄大綱

推薦語
譯者序

引言
第1章一門可伸縮的語言
1.1 一門按需伸縮的語言
1.2 是什麼讓Scala能屈能伸
1.3 為什麼要用Scala
1.4 Scala尋根
1.5 結語
第2章Scala入門
第1步使用Scala解釋器
第2步定義變量
第3步定義函數
第4步編寫Scala腳本
第5步用while做循環;用if做判斷
第6步用foreach方法和for-do遍歷
結語
第3章Scala入門(續)
第7步用類型參數化數組
第8步使用列表
第9步使用元組
第10步使用集和映射
第11步識別函數式編程風格
第12步用map方法和for-yield變換
結語
第4章類和對象
4.1 類、字段和方法
4.2 分號推斷
4.3 單例對象
4.4 樣例類
4.5 Scala應用程序
4.6 結語
第5章基礎類型和操作
5.1 一些基礎類型
5.2 字面量
5.3 字符串插值
5.4 操作符即方法
5.5 算術操作
5.6 關係和邏輯操作
5.7 位運算操作
5.8 對象相等性
5.9 操作符優先級和結合律
5.10 富包裝類
5.11 結語
第6章函數式對象
6.1 Rational類的規格定義
6.2 構建Rational實例
6.3 重新實現toString方法
6.4 檢查前提條件
6.5 添加字段
6.6 自引用
6.7 輔助構造方法
6.8 私有字段和方法
6.9 定義操作符
6.10 Scala中的標識符
6.11 方法重載
6.12 擴展方法
6.13 注意事項
6.14 結語
第7章內建的控制結構
7.1 if表達式
7.2 while循環
7.3 for表達式
7.4 用try表達式實現異常處理
7.5 match表達式
7.6 沒有break和continue的日子
7.7 變量作用域
7.8 對指令式代碼進行重構
7.9 結語
第8章函數和閉包
8.1 方法
8.2 局部函數
8.3 一等函數
8.4 函數字面量的簡寫形式
8.5 佔位符語法
8.6 部分應用的函數
8.7 閉包
8.8 特殊的函數調用形式
8.9 SAM類型
8.10 尾遞歸
8.11 結語
第9章控制抽象
9.1 減少代碼重複
9.2 簡化調用方代碼
9.3 柯里化
9.4 編寫新的控制結構
9.5 傳名參數
9.6 結語
第10章組合和繼承
10.1 一個二維的佈局類庫
10.2 抽像類
10.3 定義無參方法
10.4 擴展類
10.5 重寫方法和字段
10.6 定義參數化字段
10.7 調用超類構造方法
10.8 使用override修飾符
10.9 多態和動態綁定
10.10 聲明final成員
10.11 使用組合和繼承
10.12 實現above、beside和toString方法
10.13 定義工廠對象
10.14 增高和增寬
10.15 放在一起
10.16 結語
第11章特質
11.1 特質如何工作
11.2 瘦接口和富接口
11.3 作為可疊加修改的特質
11.4 為什麼不用多重繼承
11.5 特質參數
11.6 結語
第12章包、引入和導出
12.1 將代碼放進包裡
12.2 對相關代碼的精簡訪問
12.3 引入
12.4 隱式引入
12.5 訪問修飾符
12.6 頂層定義
12.7 導出
12.8 結語
第13章樣例類和模式匹配
13.1 一個簡單的例子
13.2 模式的種類
13.3 模式守衛
13.4 模式重疊
13.5 密封類
13.6 對Option進行模式匹配
13.7 到處都是模式
13.8 一個複雜的例子
13.9 結語
第14章使用列表
14.1 List字面量
14.2 List類型
14.3 構建列表
14.4 列表的基本操作
14.5 列表模式
14.6 List類的初階方法
14.7 List類的高階方法
14.8 List對象的方法
14.9 同時處理多個列表
14.10 理解Scala的類型推斷算法
14.11 結語
第15章使用其他集合類
15.1 序列
15.2 集和映射
15.3 在可變和不可變集合之間選擇
15.4 初始化集合
15.5 元組
15.6 結語
第16章可變對象
16.1 什麼樣的對像是可變的
16.2 可被重新賦值的變量和屬性
16.3 案例分析:離散事件模擬
16.4 用於描述數字電路的語言
16.5 模擬API
16.6 電路模擬
16.7 結語
第17章Scala的繼承關係
17.1 Scala的類繼承關係
17.2 基本類型的實現機制
17.3 底類型
17.4 定義自己的值類型
17.5 交集類型
17.6 並集類型
17.7 透明特質
17.8 結語
第18章類型參數化
18.1 函數式隊列
18.2 信息隱藏
18.3 型變註解
18.4 檢查型變註解
18.5 下界
18.6 逆變
18.7 上界
18.8 結語
第19章 枚舉
19.1 枚舉數據類型
19.2 代數數據類型
19.3 泛化代數數據類型
19.4 為什麼說ADT是代數數據類型
19.5 結語
第20章抽象成員
20.1 抽象成員概覽
20.2 類型成員
20.3 抽象的val
20.4 抽象的var
20.5 初始化抽象的val
20.6 抽像類型
20.7 路徑依賴類型
20.8 改良類型
20.9 案例分析:貨幣
20.10 結語
第21章上下文參數
21.1 上下文參數的工作原理
21.2 參數化的上下文參數類型
21.3 匿名上下文參數
21.4 作為類型族的參數化上下文參數
21.5 上下文參數的引入
21.6 上下文參數的規則
21.7 當有多個上下文參數可選時
21.8 調試上下文參數
21.9 結語
第22章擴展方法
22.1 擴展方法的基礎
22.2 泛化的擴展方法
22.3 成組的擴展方法
22.4 使用類型族
22.5 針對上下文參數的擴展方法
22.6 Scala如何查找擴展方法
22.7 結語
第23章類型族
23.1 為什麼要用類型族
23.2 上下文界定
23.3 主方法
23.4 跨界相等性
23.5 隱式轉換
23.6 類型族案例分析:JSON序列化
23.7 結語
第24章深入集合類
24.1 可變和不可變集合
24.2 集合的一致性
24.3 Iterable特質
24.4 序列型特質Seq、IndexedSeq和LinearSeq
24.5 集
24.6 映射
24.7 具體的不可變集合類
24.8 具體的可變集合類
24.9 數組
24.10 字符串
24.11 性能特徵
24.12 相等性
24.13 視圖
24.14 迭代器
24.15 從頭創建集合
24.16 Java和Scala集合互轉
24.17 結語
第25章斷言和測試
25.1 斷言
25.2 用Scala寫測試
25.3 翔實的失敗報告
25.4 作為規格說明的測試
25.5 基於屬性的測試
25.6 組織和運行測試
25.7 結語
術語表
關於作者