Scala程序設計-第2版 版權信息
- ISBN:9787115416810
- 條形碼:9787115416810 ; 978-7-115-41681-0
- 裝幀:暫無
- 冊數:暫無
- 重量:暫無
- 所屬分類:>>
Scala程序設計-第2版 本書特色
本書通過大量的代碼示例,全面介紹scala這門針對jvm的編程語言,向讀者展示了如何高效地利用scala語言及其生態系統,同時解釋了為何scala是開發高擴展性、以數據為中心的應用程序的理想語言。本書既適合scala初學者入門,也適合經驗豐富的scala開發者參考。
Scala程序設計-第2版 內容簡介
本書全面介紹scala這門針對jvm的編程語言,它集成了現代對象模型、函數式編程和先進類型系統的所有優勢。通過大量的代碼示例,本書向讀者展示了如何高效地利用scala語言及其生態系統,同時解釋了為何scala是開發高擴展性、以數據為中心的應用程序的理想語言。第2版還介紹了scala的新特性,新增了模式匹配和高級函數式編程的章節。此外,讀者還可以學到scala的命令行工具、第三方工具、庫等。
Scala程序設計-第2版 目錄
第1章 零到六十:scala簡介 11.1 為什么選擇scala 11.1.1 富有魅力的scala 21.1.2 關于java 8 31.2 安裝scala 31.2.1 使用sbt 51.2.2 執行scala命令行工具 61.2.3 在ide中運行scala repl 81.3 使用scala 81.4 并發 171.5 本章回顧與下一章提要 27第2章 更簡潔,更強大 282.1 分號 282.2 變量聲明 292.3 range 312.4 偏函數 322.5 方法聲明 332.5.1 方法默認值和命名參數列表 332.5.2 方法具有多個參數列表 342.5.3 future簡介 352.5.4 嵌套方法的定義與遞歸 382.6 推斷類型信息 402.7 保留字 442.8 字面量 462.8.1 整數字面量 462.8.2 浮點數字面量 472.8.3 布爾型字面量 482.8.4 字符字面量 482.8.5 字符串字面量 482.8.6 符號字面量 502.8.7 函數字面量 502.8.8 元組字面量 502.9 option、some 和none:避免使用null 522.10 封閉類的繼承 532.11 用文件和名空間組織代碼 542.12 導入類型及其成員 552.12.1 導入是相對的 562.12.2 包對象 572.13 抽象類型與參數化類型 572.14 本章回顧與下一章提要 59第3章 要點詳解 603.1 操作符重載? 603.2 無參數方法 633.3 優先級規則 643.4 領域特定語言 653.5 scala中的if語句 663.6 scala中的for推導式 673.6.1 for循環 673.6.2 生成器表達式 673.6.3 保護式:篩選元素 673.6.4 yielding 683.6.5 擴展作用域與值定義 693.7 其他循環結構 703.7.1 scala的while循環 713.7.2 scala中的do-while循環 713.8 條件操作符 713.9 使用try、catch和final子句 723.10 名字調用和值調用 753.11 惰性賦值 783.12 枚舉 793.13 可插入字符串 813.14 trait:scala語言的接口和“混入” 833.15 本章回顧與下一章提要 85第4章 模式匹配 864.1 簡單匹配 864.2 match中的值、變量和類型 874.3 序列的匹配 904.4 元組的匹配 944.5 case中的guard語句 944.6 case類的匹配 954.6.1 unapply方法 964.6.2 unapplyseq方法 1004.7 可變參數列表的匹配 1014.8 正則表達式的匹配 1034.9 再談case語句的變量綁定 1044.10 再談類型匹配 1044.11 封閉繼承層級與全覆蓋匹配 1054.12 模式匹配的其他用法 1074.13 總結關于模式匹配的評價 1114.14 本章回顧與下一章提要 111第5章 隱式詳解 1125.1 隱式參數 1125.2 隱式參數適用的場景 1155.2.1 執行上下文 1155.2.2 功能控制 1155.2.3 限定可用實例 1165.2.4 隱式證據 1205.2.5 繞開類型擦除帶來的限制 1225.2.6 改善報錯信息 1245.2.7 虛類型 1245.2.8 隱式參數遵循的規則 1275.3 隱式轉換 1285.3.1 構建獨有的字符串插入器 1325.3.2 表達式問題 1345.4 類型類模式 1355.5 隱式所導致的技術問題 1375.6 隱式解析規則 1395.7 scala內置的各種隱式 1395.8 合理使用隱式 1465.9 本章回顧與下一章提要 146第6章 scala函數式編程 1476.1 什么是函數式編程 1486.1.1 數學中的函數 1486.1.2 不可變變量 1496.2 scala中的函數式編程 1516.2.1 匿名函數、lambda與閉包 1526.2.2 內部與外部的純粹性 1546.3 遞歸 1546.4 尾部調用和尾部調用優化 1556.5 偏應用函數與偏函數 1576.6 curry化與函數的其他轉換 1586.7 函數式編程的數據結構 1626.7.1 序列 1626.7.2 映射表 1666.7.3 集合 1686.8 遍歷、映射、過濾、折疊與歸約 1686.8.1 遍歷 1696.8.2 映射 1706.8.3 扁平映射 1726.8.4 過濾 1736.8.5 折疊與歸約 1746.9 向左遍歷與向右遍歷 1786.10 組合器:軟件*佳組件抽象 1836.11 關于復制 1866.12 本章回顧與下一章提要 188第7章 深入學習for推導式 1897.1 內容回顧:for推導式組成元素 1897.2 for推導式:內部機制 1927.3 for推導式的轉化規則 1947.4 option以及其他的一些容器類型 1977.4.1 option容器 1977.4.2 either:option類型的邏輯擴展 2007.4.3 try類型 2057.4.4 scalaz提供的validation類 2067.5 本章回顧與下一章提要 209第8章 scala面向對象編程 2108.1 類與對象初步 2118.2 引用與值類型 2138.3 價值類 2148.4 父類 2178.5 scala的構造器 2178.6 類的字段 2218.6.1 統一訪問原則 2238.6.2 一元方法 2248.7 驗證輸入 2248.8 調用父類構造器(與良好的面向對象設計) 2268.9 嵌套類型 2308.10 本章回顧與下一章提要 232第9章 特征 2339.1 java 8中的接口 2339.2 混入trait 2349.3 可堆疊的特征 2389.4 構造trait 2439.5 選擇類還是trait 2449.6 本章回顧與下一章提要 245第10章 scala對象系統(i) 24610.1 參數化類型:繼承轉化 24610.1.1 hood下的函數 24710.1.2 可變類型的變異 25010.1.3 scala和java中的變異 25210.2 scala的類型層次結構 25310.3 閑話nothing(以及null) 25410.4 product、case類和元組 25810.5 predef對象 26010.5.1 隱式轉換 26010.5.2 類型定義 26210.5.3 條件檢查方法 26310.5.4 輸入輸出方法 26310.5.5 雜項方法 26510.6 對象的相等 26510.6.1 equals方法 26610.6.2 == 和!=方法 26610.6.3 eq 和ne方法 26710.6.4 數組相等和sameelements方法 26710.7 本章回顧與下一章提要 268第11章 scala對象系統(ii) 26911.1 覆寫類成員和trait成員 26911.2 嘗試覆寫final聲明 27211.3 覆寫抽象方法和具體方法 27211.4 覆寫抽象字段和具體字段 27411.5 覆寫抽象類型 28011.6 無須區分訪問方法和字段:統一訪問原則 28011.7 對象層次結構的線性化算法 28211.8 本章回顧與下一章提要 287第12章 scala集合庫 28812.1 通用、可變、不可變、并發以及并行集合 28812.1.1 scala.collection包 28912.1.2 collection.concurrent包 29012.1.3 collection.convert包 29112.1.4 collection.generic包 29112.1.5 collection.immutable包 29112.1.6 scala.collection.mutable包 29212.1.7 scala.collection.parallel包 29412.2 選擇集合 29512.3 集合庫的設計慣例 29612.3.1 builder 29612.3.2 canbuildfrom 29712.3.3 like特征 29812.4 值類型的特化 29812.5 本章回顧與下一章提要 300第13章 可見性規則 30113.1 默認可見性:公有可見性 30113.2 可見性關鍵字 30213.3 public可見性 30313.4 protected可見性 30413.5 private可見性 30513.6 作用域內私有和作用域內受保護可見性 30613.7 對可見性的想法 31213.8 本章回顧與下一章提要 313第14章 scala類型系統(i) 31414.1 參數化類型 31514.1.1 變異標記 31514.1.2 類型構造器 31514.1.3 類型參數的名稱 31514.2 類型邊界 31514.2.1 類型邊界上限 31614.2.2 類型邊界下限 31614.3 上下文邊界 32014.4 視圖邊界 32014.5 理解抽象類型 32214.6 自類型標記 32514.7 結構化類型 32914.8 復合類型 33214.9 存在類型 33414.10 本章回顧與下一章提要 335第15章 scala類型系統(ii) 33615.1 路徑相關類型 33615.1.1 c.this 33715.1.2 c.super 33715.1.3 path.x 33815.2 依賴方法類型 33915.3 類型投影 34015.4 值的類型 34315.4.1 元組類型 34315.4.2 函數類型 34315.4.3 中綴類型 34315.5 higher-kinded類型 34415.6 類型lambda 34815.7 自遞歸類型:f-bounded多態 35015.8 本章回顧與下一章提要 351第16章 高級函數式編程 35216.1 代數數據類型 35216.1.1 加法類型與乘法類型 35216.1.2 代數數據類型的屬性 35416.1.3 代數數據類型的*后思考 35516.2 范疇理論 35516.2.1 關于范疇 35616.2.2 functor范疇 35616.2.3 monad范疇 36016.2.4 monad的重要性 36216.3 本章回顧與下一章提要 363第17章 并發工具 36517.1 scala.sys.process包 36517.2 future類型 36717.3 利用actor模型構造穩固且可擴展的并發應用 37117.4 akka:為scala設計的actor系統 37217.5 pickling和spores 38317.6 反應式編程 38417.7 本章回顧與下一章提要 385第18章 scala與大數據 38618.1 大數據簡史 38618.2 用scala改善mapreduce 38718.3 超越mapreduce 39218.4 數學范疇 39318.5 scala數據工具列表 39418.6 本章回顧與下一章提要 394第19章 scala動態調用 39619.1 一個較為激進的示例:ruby on rails框架中的activerecord庫 39619.2 使用動態特征實現scala 中的動態調用 39719.3 關于dsl的一些思考 40219.4 本章回顧與下一章提要 402第20章 scala的領域特定語言 40320.1 dsl 示例:scala中xml和json dsl 40420.2 內部dsl 40620.3 包含解析組合子的外部dsl 41020.3.1 關于解析組合子 41020.3.2 計算工資單的外部dsl 41020.4 內部dsl與外部dsl:*后的思考 41320.5 本章回顧與下一章提要 413第21章 scala工具和庫 41421.1 命令行工具 41421.1.1 命令行工具:scalac 41421.1.2 scala命令行工具 41821.1.3 scalap和javap命令行工具 42121.1.4 scaladoc 命令行工具 42221.1.5 fsc命令行工具 42221.2 構建工具 42221.2.1 sbt:scala標準構建工具 42321.2.2 其他構建工具 42521.3 與ide或文本編輯器集成 42521.4 在scala中應用測試驅動開發 42621.5 第三方庫 42721.6 本章回顧與下一章提要 429第22章 與java的互操作 43022.1 在scala代碼中使用java名稱 43022.2 java泛型與scala泛型 43022.3 javabean的性質 43222.4 anyval類型與java原生類型 43322.5 java代碼中的scala名稱 43322.6 本章回顧與下一章提要 434第23章 應用程序設計 43523.1 回顧之前的內容 43523.2 注解 43723.3 trait即模塊 44123.4 設計模式 44223.4.1 構造型模式 44323.4.2 結構型模式 44323.4.3 行為型模式 44423.5 契約式設計帶來更好的設計 44623.6 帕特農神廟架構 44823.7 本章回顧與下一章提要 453第24章 元編程:宏與反射 45424.1 用于理解類型的工具 45524.2 運行時反射 45524.2.1 類型反射 45524.2.2 classtag、typetag與manifest 45724.3 scala 的高級運行時反射api 45824.4 宏 46124.4.1 宏的示例:強制不變性 46324.4.2 關于宏的*后思考 46624.5 本章回顧與下一章提要 466附錄a 參考文獻 468作者簡介 473關于封面 473
展開全部
Scala程序設計-第2版 作者簡介
Dean Wampler博士是Typesafe公司的大數據產品架構師。Typesafe使用Scala、函數式編程、Spark、Hadoop以及Akka技術編寫以數據為中心的工具和服務。Dean是《面向Java開發者的函數式編程》的作者,同時也與他人合著了《Hive編程指南》一書。Alex Payne是Twitter的平臺組長。在Alex開發的服務基礎上,其他的程序開發者構造了一套備受歡迎的社交消息服務。此前,Alex還為政治競選、公益性組織以及初創企業編寫過一些Web應用。