Kotlin 編程實踐 (Kotlin Cookbook: A Problem-Focused Approach)

Ken Kousen

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

商品描述

本書的重點不僅在於講解Kotlin 的語法與語義,還將展示何時以及為何應該使用某個指定的語言特性。

本書的目標不一定會涵蓋每一個Kotlin 語法與庫的細節。

但在最後,本書添加了很多基本原理的內容,讓即使只有Kotlin 初級知識的讀者也可以理解本書的內容。

當你認真學習Kotlin 的細節後,你就可以使用這門受歡迎的語言構建Android 應用、Web 應用以及其他程序。

Kotlin 不僅可以用於任何應用Java 的地方,還可以用於iOS 開發、編寫原生應用程序、 開發以及更多場景。

目錄大綱

目錄

序言1
前言3
第1章安裝並運行Kotlin 11
1.1在沒有本地編譯器的情況下運行Kotlin 11
1.2在本地安裝Kotlin 13
1.3在命令行中編譯並運行Kotlin 15
1.4使用Kotlin REPL 16
1.5執行Kotlin腳本17
1.6使用GraalVM構建獨立應用程序18
1.7為Gradle添加Kotlin插件(Groovy語法) 21
1.8為Gradle添加Kotlin插件(Kotlin語法) 24
1.9使用Gradle構建Kotlin工程26
1.10使用Maven編譯Kotlin 27

第2章Kotlin基礎31
2.1在Kotlin中使用可空類型31
2.2在Java中添加可空指示器34
2.3為Java添加重載方法36
2.4顯式類型轉換40
2.5打印不同的進制42
2.6數冪44
2.7使用移位運算符46
2.8使用位布爾運算符49
2.9使用to函數創建Pair實例52

第3章Kotlin中的面向對象編程55
3.1理解const與val的不同之處55
3.2創建自定義的getter與setter 56
3.3定義數據類59
3.4幕後屬性技術62
3.5操作符重載65
3.6使用lateinit進行延遲初始化67
3.7使用安全轉換函數、恆等操作符,以及Elvis操作符覆蓋equals函70
3.8創建單例72
3.9無事生非75

第4章函數式編程79
4.1在算法中使用fold 79
4.2使用reduce函數進行歸約82
4.3使用尾遞歸84

第5章集合89
5.1使用數組89
5.2創建集合92
5.3為已存在的集合創建只讀視圖94
5.4從集合構建map 96
5.5當集合為空的時候返回默認值97
5.6將變量限制在給定區間98
5.7處理集合中的窗口100
5.8解構list 102
5.9將多個屬性排序103
5.10自定義迭代器105
5.11根據類型過濾集合107
5.12在數列中創建區間108

第6章序列113
6.1使用懶序列113
6.2生成序列115
6.3管理無限序列117
6.4以固定間隔從序列生成元素119

第7章作用域函數123
7.1使用apply函數在構造結束之後初始化對象123
7.2使用also函數進行其他操作124
7.3使用let函數與Elvis 126
7.4使用let函數代替臨時變量128

第8章Kotlin委託131
8.1使用委託實現組合131
8.2使用lazy委託134
8.3確保值不為空136
8.4使用observable與vetoable委託137
8.5使用映射作為委託141
8.6創建你自己的委託143

第9章測試147
9.1設置測試類的生命週期147
9.2使用數據類進行測試152
9.3使用幫助函數並使用默認參數154
9.4使用不同的參數重複JUnit 5的測試156
9.5使用數據類進行參數化測試159

第10章輸入/輸出161
10.1使用use函數管理資源161
10.2寫文件164

第11章其他167
11.1在代碼中獲取Kotlin版本號167
11.2重複執行lambda表達式169
11.3強制when語句進行窮舉170
11.4在正則表達式中使用replace函數172
11.5轉換為二進製字符串並返回174
11.6使一個類可執行176
11.7測量經過時間179
11.8啟動線程180
11.9使用TODO強製完成183
11.10理解Random的隨機行為185
11.11在函數命名中使用特殊字符187
11.12告知Java處理異常188

第12章Spring框架191
12.1開放用於繼承的Spring管理的bean類191
12.2持久化Kotlin數據類194
12.3依賴注入196

第13章協程與結構化並發201
13.1選擇協程構建器201
13.2使用withContext替換async/await 207
13.3使用協程調度器208
13.4在Java線程池上運行協程210
13.5取消協程213
13.6協程調試216