Kotlin編程之美( 簡體 字) | |
作者:(法)皮埃爾-伊夫斯·索蒙特 | 類別:1. -> 程式設計 -> 手機程式 -> Kotlin |
譯者:李培培|譯 | |
出版社:機械工業 | 3dWoo書號: 52809 詢問書籍請說出此書號! 有庫存 NT售價: 595 元 |
出版日:4/1/2020 | |
頁數:376 | |
光碟數:0 | |
站長推薦: | |
印刷:黑白印刷 | 語系: ( 簡體 字 ) |
ISBN:9787111650409 | 加入購物車 │加到我的最愛 (請先登入會員) |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社) | |
前 言
關于本書 關于讀者 關于封面插圖 第1章 讓程序*安全 1.1 編程陷阱 1.1.1 安全的處理作用 1.1.2 用引用透明性使程序*安全 1.2 安全編程的好處 1.2.1 使用替換模型對程序進行推理 1.2.2 應用安全原則的簡單示例 1.2.3 將抽象推向極限 1.3 本章小結 第2章 Kotlin中的函數式編程:概述 2.1 Kotlin中的字段和變量 2.1.1 省略類型以簡化 2.1.2 使用可變字段 2.1.3 理解延遲初始化 2.2 Kotlin中的類和接口 2.2.1 使代碼*加簡潔 2.2.2 實現接口或擴展類 2.2.3 實例化一個類 2.2.4 重載屬性構造函數 2.2.5 創建equals和hashCode方法 2.2.6 解構數據對象 2.2.7 在Kotlin中實現靜態成員 2.2.8 使用單例模式 2.2.9 防止工具類實例化 2.3 Kotlin沒有原語 2.4 Kotlin的兩種集合類型 2.5 Kotlin的包 2.6 Kotlin的可見性 2.7 Kotlin中的函數 2.7.1 函數聲明 2.7.2 使用局部函數 2.7.3 覆蓋函數 2.7.4 使用擴展函數 2.7.5 使用lamdba表達式 2.8 Kotlin中的null 2.8.1 處理可空類型 2.8.2 Elvis和默認值 2.9 程序流程和控制結構 2.9.1 使用條件選擇器 2.9.2 使用多條件選擇器 2.9.3 使用循環 2.10 Kotlin的未檢查異常 2.11 自動關閉資源 2.12 Kotlin的智能轉換 2.13 相等性VS一致性 2.14 字符串插值 2.15 多行字符串 2.16 型變:參數化類型和子類型 2.16.1 為什么型變是一個潛在的問題 2.16.2 何時使用協變以及何時使用逆變 2.16.3 聲明端型變與使用端型變 2.17 本章小結 第3章 用函數編程 3.1 函數是什么? 3.1.1 理解兩個函數集之間的關系 3.1.2 Kotlin中反函數概述 3.1.3 處理偏函數 3.1.4 理解函數復合 3.1.5 使用多參數函數 3.1.6 柯里化函數 3.1.7 使用偏應用函數 3.1.8 沒有作用的函數 3.2 Kotlin中的函數 3.2.1 將函數理解為數據 3.2.2 將數據理解為函數 3.2.3 使用對象構造函數作為函數 3.2.4 使用Kotlin的fun函數 3.2.5 使用對象表示法和函數表示法 3.2.6 使用值函數 3.2.7 使用函數引用 3.2.8 復合函數 3.2.9 重用函數 3.3 **函數特征 3.3.1 多參數函數如何? 3.3.2 應用柯里化函數 3.3.3 實現高階函數 3.3.4 創建多態高階函數 3.3.5 使用匿名函數 3.3.6 定義局部函數 3.3.7 實現閉包 3.3.8 應用偏函數和自動柯里化 3.3.9 切換偏應用函數的參數 3.3.10 聲明單位函數 3.3.11 使用正確的類型 3.4 本章小結 第4章 遞歸、尾遞歸和記憶化 4.1 共遞歸與遞歸 4.1.1 實現共遞歸 4.1.2 實現遞歸 4.1.3 區分遞歸函數和共遞歸函數 4.1.4 選擇遞歸或尾遞歸 4.2 尾調用消除 4.2.1 使用尾調用消除 4.2.2 從循環切換到共遞歸 4.2.3 使用遞歸值函數 4.3 遞歸函數和列表 4.3.1 使用雙遞歸函數 4.3.2 對列表抽象遞歸 4.3.3 反轉列表 4.3.4 構建共遞歸列表 4.3.5 嚴格的后果 4.4 記憶化 4.4.1 在基于循環的編程中使用記憶化 4.4.2 在遞歸函數中使用記憶化 4.4.3 使用隱式記憶化 4.4.4 使用自動記憶化 4.4.5 實現多參數函數的記憶化 4.5 記憶函數純嗎? 4.6 本章小結 第5章 用列表處理數據 5.1 如何對數據集合進行分類 5.2 不同類型的列表 5.3 相對期望列表性能 5.3.1 用時間來交換內存空間和復雜性 5.3.2 避免就地突變 5.4 KOTLIN有哪些可用列表? 5.4.1 使用持久數據結構 5.4.2 實現不可變的、持久的單鏈表 5.5 列表操作中的數據共享 5.6 *多列表操作 5.6.1 標注的益處 5.6.2 連接列表 5.6.3 從列表末尾刪除 5.6.4 使用遞歸對具有高階函數(HOFs)的列表進行折疊 5.6.5 使用型變 5.6.6 創建foldRight的一個棧安全遞歸版本 5.6.7 映射和過濾列表 5.7 本章小結 第6章 處理可選數據 6.1 空指針問題 6.2 Kotlin如何處理空引用 6.3 空引用的替代方法 6.4 使用OPTION類型 6.4.1 從一個Option中獲取值 6.4.2 將函數應用于可選值 6.4.3 處理Option組合 6.4.4 Option用例 6.4.5 其他組合選項的方法 6.4.6 用Option組合List 6.4.7 何時使用Option 6.5 本章小結 第7章 處理錯誤和異常 7.1 數據缺失的問題 7.2 Either類型 7.3 Result類型 7.4 Result模式 7.5 **Result處理 7.6 映射Failture 7.7 添加工廠函數 7.8 應用作用 7.9 **結果組合 7.10 本章小結 第8章 **列表處理 8.1 長度問題 8.2 性能問題 8.3 記憶化的好處 8.3.1 處理記憶化的缺點 8.3.2 評估性能改進 8.4 List和Result組成 8.4.1 處理List返回Result 8.4.2 從List<Result>轉換為Result<List> 8.5 常見列表抽象 8.5.1 壓縮和解壓縮列表 8.5.2 通過索引訪問元素 8.5.3 列表分裂 8.5.4 搜索子列表 8.5.5 處理列表的其它函數 8.6 列表的自動并行處理 8.6.1 并不是所有的計算都可以并行化 8.6.2 將列表分解為子列表 8.6.3 并行處理子列表 8.7 本章小結 第9章 與惰性配合 9.1 嚴格VS惰性 9.2 Kotlin和嚴格 9.3 Kotlin和惰性 9.4 懶惰的實現 9.4.1 組合惰性值 9.4.2 提升函數 9.4.3 映射和flatMapping惰性 9.4.4 用列表組成惰性 9.4.5 處理異常 9.5 深層次的惰性構成 9.5.1 惰性應用作用 9.5.2 不能沒有惰性 9.5.3 創建一個惰性列表數據結構 9.6 處理流 9.6.1 折疊流 9.6.2 跟蹤計算和函數應用 9.6.3 將流應用于具體問題 9.7 本章小結 **0章 使用樹處理*多的數據 10.1 二叉樹 10.2 了解平衡和不平衡的樹 10.3 樹的大小、高度和深度 10.4 空樹和遞歸定義 10.5 多葉樹 10.6 有序二叉樹或二叉搜索樹 10.7 插入順序和樹的結構 10.8 遞歸和非遞歸樹遍歷順序 10.8.1 遞歸遍歷樹 10.8.2 非遞歸遍歷樹 10.9 實現二叉搜索樹 10.9.1 理解型變和樹 10.9.2 Tree類中的抽象函數 10.9.3 重載操作符 10.9.4 樹中遞歸 10.9.5 從樹中移除元素 10.9.6 合并任意樹 10.10 關于折疊樹 10.10.1 雙函數折疊 10.10.2 單函數折疊 10.10.3 如何選擇折疊實現 10.11 映射樹 10.12 平衡樹 10.12.1 旋轉樹 10.12.2 使用Day-Stout-Warren算法 10.12.3 自動平衡樹 **1章 用**樹解決問題 11.1 自平衡樹的性能*好,棧*安全 11.1.1 了解基本的紅黑樹結構 11.1.2 向紅黑樹中添加元素 11.1.3 從紅黑樹中移除元素 11.2 一個紅黑樹的用例:Map 11.2.1 實現Map 11.2.2 擴展Map 11.2.3 使用具有不可比較鍵的Map 11.3 實現功能優先隊列 11.3.1 查看優先隊列訪問協議 11.3.2 探索優先級隊列用例 11.3.3 查看實現需求 11.3.4 左傾堆數據結構 11.3.5 實現左傾堆 11.3.6 實現類似隊列的接口 11.4 元素和有序列表 11.5 不可比較元素的優先隊列 11.6 本章小結 **2章 函數式輸入/輸出 12.1 作用在上下文中是什么意思 12.1.1 處理作用 12.1.2 實現作用 12.2 讀取數據 12.2.1 從控制臺讀取數據 12.2.2 從文件中讀取數據 12.3 輸入測試 12.4 全函數式輸入/輸出 12.4.1 使輸入/輸出全函數式 12.4.2 實現純函數式的輸入/輸出 12.4.3 結合輸入/輸出 12.4.4 用IO處理輸入 12.4.5 擴展IO類型 12.4.6 使IO類型堆棧安全 12.5 本章小結 **3章 與參與者共享可變狀態 13.1 角色模型 13.1.1 理解異步消息傳遞 13.1.2 并行化處理 13.1.3 處理角色狀態突變 13.2 角色框架實現 13.2.1 理解局限性 13.2.2 設計角色框架接口 13.3 AbstractActor的實現 13.4 讓角色投入工作 13.4.1 實現乒乓球例子 13.4.2 并行運行計算 13.4.3 重排結果 13.4.4 優化性能 13.5 本章小結 **4章 解決常見功能性問題 14.1 斷言和數據驗證 14.2 函數和作用的重試 14.3 從文件中讀入屬性 14.3.1 加載屬性文件 14.3.2 以字符串形式讀取屬性 14.3.3 生成*好的錯誤消息 14.3.4 將屬性作為列表讀取 14.3.5 讀取枚舉值 14.3.6 讀取任意類型的屬性 14.4 轉換命令式風格的程序:XML閱讀器 14.4.1 **步:命令式風格的解決方案 14.4.2 第2步:將命令式風格的代碼轉換為函數式 14.4.3 第3步:將程序轉換得*函數式 14.4.4 第4步:修復參數類型問題 14.4.5 第5步:使元素處理函數成為參數 14.4.6 第6步:對元素名稱進行錯誤處理 14.4.7 第7步:對先前命令式代碼的額外改進 14.5 本章小結 附錄 A-將Kotlin與Java結合 A.1 創建和管理混合項目402 A.1.1 利用Gradle創建一個簡單的項目 A.1.2 將Gradle項目導入IntelliJ A.1.3 為項目增加依賴 A.1.4 創建多模塊項目 A.1.5 為多模塊項目增加依賴 A.2 Java庫方法和Kotlin代碼 A.2.1 使用Java基本類型 A.2.2 使用Java數值對象類型 A.2.3 對null值快速失敗 A.2.4 使用Kotlin和Java的字符串類型 A.2.5 實現其他類型的轉換 A.2.6 使用Java可變參數 A.2.7 在Java中**可空性 A.2.8 調用getter方法和setter方法 A.2.9 使用保留字獲取Java屬性 A.2.10 調用已檢查異常 A.3 SAM接口 A.4 Kotlin函數和Java代碼 A.4.1 轉換Kotlin屬性 A.4.2 使用Kotlin公共字段 A.4.3 靜態字段 A.4.4 將Kotlin函數作為Java方法調用 A.4.5 將Kotlin的類型轉換為Java類型 A.4.6 函數類型 A.5 混合Kotlin/Java項目的特定問題 附錄B-Kotlin中基于屬性的測試 B.1 為何使用基于屬性的測試 B.1.1 編寫接口 B.1.2 編寫測試程序 B.2 什么是基于屬性的測試 B.3 抽象及基于屬性的測試 B.4 基于屬性的單元測試的依賴 B.5 編寫基于屬性的測試程序 B.5.1 創建自定義生成器 B.5.2 使用自定義生成器 B.5.3 通過*進一步抽象來簡化代碼 va開發人員,維護糟糕的遺留代碼、解釋晦澀的注釋、反復編寫相同的樣板文件可能會讓編程失去樂趣。《Kotlin編程之美》講述用Kotlin編寫易于理解、易于維護、安全的程序的方法和技巧。在本書中,經驗豐富的工程師皮埃爾-伊夫斯?索蒙特將以全新的、以函數式編程的視角來處理常見的編程挑戰,并用示例深入講解如何正確處理錯誤和數據、如何管理狀態以及如何利用惰性。
《Kotlin編程之美》的內容包括編程功能、處理可選數據、安全處理錯誤和異常以及處理和共享狀態突變等。《Kotlin編程之美》的讀者對象為中級Java或Kotlin開發人員、高等院校計算機相關專業學生以及對安全編程感興趣的工程技術人員等。
|