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

高宇翔

  • 出版商: 電子工業
  • 出版日期: 2022-02-01
  • 售價: $1,128
  • 貴賓價: 9.5$1,072
  • 語言: 簡體中文
  • 頁數: 656
  • ISBN: 7121428326
  • ISBN-13: 9787121428326
  • 相關分類: JVM 語言
  • 立即出貨

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

商品描述

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

目錄大綱

序 XIX 引言 XXIII 第1章 一門可伸縮的語言 1 1.1 一門按需伸縮的語言 2 1.2 是什麽讓Scala能屈能伸 6 1.3 為什麽要用Scala 9 1.4 Scala尋根 17 1.5 結語 19 第2章 Scala入門 20 第1步 使用Scala解釋器 21 第2步 定義變量 22 第3步 定義函數 25 第4步 編寫Scala腳本 27 第5步 用while做循環;用if做判斷 29 第6步 用foreach方法和for-do遍歷 31 結語 34 第3章 Scala入門(續) 35 第7步 用類型參數化數組 35 第8步 使用列表 40 第9步 使用元組 44 第10步 使用集和映射 45 第11步 識別函數式編程風格 50 第12步 用map方法和for-yield變換 53 結語 57 第4章 類和對象 58 4.1 類、字段和方法 58 4.2 分號推斷 63 4.3 單例對象 64 4.4 樣例類 67 4.5 Scala應用程序 69 4.6 結語 71 第5章 基礎類型和操作 72 5.1 一些基礎類型 72 5.2 字面量 73 5.3 字符串插值 79 5.4 操作符即方法 81 5.5 算術操作 84 5.6 關系和邏輯操作 85 5.7 位運算操作 87 5.8 對象相等性 88 5.9 操作符優先級和結合律 90 5.10 富包裝類 93 5.11 結語 94 第6章 函數式對象 95 6.1 Rational類的規格定義 95 6.2 構建Rational實例 96 6.3 重新實現toString方法 98 6.4 檢查前提條件 99 6.5 添加字段 100 6.6 自引用 102 6.7 輔助構造方法 103 6.8 私有字段和方法 105 6.9 定義操作符 106 6.10 Scala中的標識符 108 6.11 方法重載 111 6.12 擴展方法 113 6.13 註意事項 114 6.14 結語 115 第7章 內建的控制結構 116 7.1 if表達式 117 7.2 while循環 118 7.3 for表達式 121 7.4 用try表達式實現異常處理 127 7.5 match表達式 131 7.6 沒有break和continue的日子 133 7.7 變量作用域 135 7.8 對指令式代碼進行重構 139 7.9 結語 141 第8章 函數和閉包 142 8.1 方法 142 8.2 局部函數 143 8.3 一等函數 145 8.4 函數字面量的簡寫形式 147 8.5 占位符語法 148 8.6 部分應用的函數 149 8.7 閉包 152 8.8 特殊的函數調用形式 154 8.9 SAM類型 158 8.10 尾遞歸 159 8.11 結語 163 第9章 控制抽象 164 9.1 減少代碼重復 164 9.2 簡化調用方代碼 168 9.3 柯里化 170 9.4 編寫新的控制結構 172 9.5 傳名參數 175 9.6 結語 178 第10章 組合和繼承 179 10.1 一個二維的佈局類庫 179 10.2 抽象類 180 10.3 定義無參方法 182 10.4 擴展類 184 10.5 重寫方法和字段 187 10.6 定義參數化字段 188 10.7 調用超類構造方法 189 10.8 使用override修飾符 191 10.9 多態和動態綁定 192 10.10 聲明final成員 195 10.11 使用組合和繼承 196 10.12 實現above、beside和toString方法 198 10.13 定義工廠對象 201 10.14 增高和增寬 204 10.15 放在一起 205 10.16 結語 207 第11章 特質 208 11.1 特質如何工作 208 11.2 瘦接口和富接口 211 11.3 作為可疊加修改的特質 214 11.4 為什麽不用多重繼承 218 11.5 特質參數 223 11.6 結語 225 第12章 包、引入和導出 227 12.1 將代碼放進包里 227 12.2 對相關代碼的精簡訪問 229 12.3 引入 232 12.4 隱式引入 236 12.5 訪問修飾符 237 12.6 頂層定義 242 12.7 導出 243 12.8 結語 247 第13章 樣例類和模式匹配 248 13.1 一個簡單的例子 248 13.2 模式的種類 253 13.3 模式守衛 264 13.4 模式重疊 265 13.5 密封類 267 13.6 對Option進行模式匹配 269 13.7 到處都是模式 271 13.8 一個復雜的例子 276 13.9 結語 284 第14章 使用列表 285 14.1 List字面量 285 14.2 List類型 286 14.3 構建列表 287 14.4 列表的基本操作 287 14.5 列表模式 289 14.6 List類的初階方法 291 14.7 List類的高階方法 303 14.8 List對象的方法 311 14.9 同時處理多個列表 313 14.10 理解Scala的類型推斷算法 315 14.11 結語 319 第15章 使用其他集合類 320 15.1 序列 320 15.2 集和映射 324 15.3 在可變和不可變集合之間選擇 331 15.4 初始化集合 334 15.5 元組 337 15.6 結語 340 第16章 可變對象 341 16.1 什麽樣的對象是可變的 341 16.2 可被重新賦值的變量和屬性 344 16.3 案例分析:離散事件模擬 347 16.4 用於描述數字電路的語言 348 16.5 模擬API 351 16.6 電路模擬 356 16.7 結語 363 第17章 Scala的繼承關系 365 17.1 Scala的類繼承關系 365 17.2 基本類型的實現機制 369 17.3 底類型 371 17.4 定義自己的值類型 372 17.5 交集類型 376 17.6 並集類型 377 17.7 透明特質 380 17.8 結語 382 第18章 類型參數化 383 18.1 函數式隊列 383 18.2 信息隱藏 387 18.3 型變註解 390 18.4 檢查型變註解 396 18.5 下界 399 18.6 逆變 401 18.7 上界 404 18.8 結語 407 第19章 枚舉 408 19.1 枚舉數據類型 408 19.2 代數數據類型 413 19.3 泛化代數數據類型 415 19.4 為什麽說ADT是代數數據類型 416 19.5 結語 420 第20章 抽象成員 421 20.1 抽象成員概覽 421 20.2 類型成員 422 20.3 抽象的val 423 20.4 抽象的var 424 20.5 初始化抽象的val 425 20.6 抽象類型 433 20.7 路徑依賴類型 436 20.8 改良類型 438 20.9 案例分析:貨幣 439 20.10 結語 450 第21章 上下文參數 451 21.1 上下文參數的工作原理 452 21.2 參數化的上下文參數類型 456 21.3 匿名上下文參數 461 21.4 作為類型族的參數化上下文參數 463 21.5 上下文參數的引入 466 21.6 上下文參數的規則 468 21.7 當有多個上下文參數可選時 471 21.8 調試上下文參數 473 21.9 結語 475 第22章 擴展方法 476 22.1 擴展方法的基礎 476 22.2 泛化的擴展方法 479 22.3 成組的擴展方法 481 22.4 使用類型族 484 22.5 針對上下文參數的擴展方法 486 22.6 Scala如何查找擴展方法 491 22.7 結語 492 第23章 類型族 493 23.1 為什麽要用類型族 493 23.2 上下文界定 499 23.3 主方法 502 23.4 跨界相等性 506 23.5 隱式轉換 512 23.6 類型族案例分析:JSON序列化 515 23.7 結語 526 第24章 深入集合類 527 24.1 可變和不可變集合 528 24.2 集合的一致性 530 24.3 Iterable特質 532 24.4 序列型特質Seq、IndexedSeq和LinearSeq 539 24.5 集 544 24.6 映射 548 24.7 具體的不可變集合類 553 24.8 具體的可變集合類 560 24.9 數組 565 24.10 字符串 570 24.11 性能特徵 571 24.12 相等性 573 24.13 視圖 574 24.14 迭代器 579 24.15 從頭創建集合 585 24.16 Java和Scala集合互轉 587 24.17 結語 589 第25章 斷言和測試 590 25.1 斷言 590 25.2 用Scala寫測試 592 25.3 翔實的失敗報告 594 25.4 作為規格說明的測試 596 25.5 基於屬性的測試 599 25.6 組織和運行測試 601 25.7 結語 603 術語表 604 關於作者 627