倉頡語言核心編程——入門、進階與實戰
徐禮文
相關主題
商品描述
"本書是一本系統闡述倉頡程序設計語言的技術書籍,倉頡程序設計語言是一門由華為公司研發的國產電腦高級編程語言。 全倉頡語言作為新一代的面向應用的全場景編程語言,兼具開發效率和運行性能,並且有極強的領域擴展能力。倉頡語言在設計上廣泛吸收和借鑒了現代編程語言特性,是**面向全場景應用開發的通用編程語言。 本書全面介紹了倉頡語言的語法設計和應用開發,分為3篇共20章。基礎篇(第1~9章)介紹倉頡語言的安裝與開發環境搭建、數據類型、控制流、集合、函數式編程;進階篇(第10~16章)介紹倉頡語言的面向對象編程、擴展、模塊管理和包、標準包和單元測試;高級篇(第17~20章)介紹倉頡語言的元編程、跨語言編程並發編程和網絡編程。 本書適用於對倉頡語言感興趣的編程愛好者,也適用於在校電腦專業學生,本書可以作為倉頡語言學習者的入門參考書,也可以作為大專院校倉頡語言課程的學習教材。 "
目錄大綱
基 礎 篇
第1章 倉頡語言介紹 3
1.1 倉頡語言的主要特徵 3
1.2 倉頡語言的特點 4
1.3 倉頡語言對中國軟件產業的價值 5
1.3.1 自研編程語言的價值 5
1.3.2 倉頡語言的價值 7
1.4 本章小結 8
第2章 安裝與配置 9
2.1 Linux環境搭建(Ubuntu) 9
2.1.1 操作系統要求 9
2.1.2 倉頡工具鏈的安裝 10
2.1.3 混合開發環境配置 11
2.2 Windows環境搭建 14
2.2.1 倉頡工具鏈的安裝 14
2.2.2 安裝CangjieStudio開發工具 14
2.3 第1個倉頡程序 20
2.3.1 創建項目目錄 20
2.3.2 第1個“Hello, World!”程序 20
2.3.3 編譯執行倉頡程序 21
2.4 本章小結 21
第3章 編程基礎 22
3.1 程序結構 22
3.2 關鍵字 23
3.3 標識符 24
3.3.1 普通標識符 24
3.3.2 原始標識符 24
3.4 註釋 25
3.4.1 單行註釋 25
3.4.2 多行註釋 25
3.5 變量和常量 26
3.5.1 定義變量 26
3.5.2 定義常量 27
3.5.3 作用域 27
3.5.4 初始化 28
3.6 代碼編寫規範 29
3.7 本章小結 30
第4章 數據類型 31
4.1 整數類型 31
4.1.1 整數類型的表示範圍 31
4.1.2 整數類型的運算 32
4.2 浮點類型 36
4.3 布爾類型 38
4.4 字符類型 38
4.5 字符串類型 39
4.5.1 單行字符串 39
4.5.2 多行字符串 40
4.5.3 插值字符串 41
4.5.4 字符串操作 41
4.6 Unit類型 42
4.7 元組類型 42
4.7.1 元組定義 42
4.7.2 元組類型的字面量 42
4.8 區間類型 43
4.8.1 左閉右開區間 43
4.8.2 左閉右閉區間 43
4.9 Nothing類型 44
4.10 枚舉類型 44
4.10.1 enum的定義和使用 44
4.10.2 enum值 45
4.10.3 enum的模式匹配 46
4.11 本章小結 47
第5章 類型轉換 48
5.1 數值類型之間的轉換 48
5.2 Char和UInt32之間的轉換 49
5.3 is和as操作符 50
5.3.1 is操作符 50
5.3.2 as操作符 51
5.4 使用Convert庫進行類型轉換 51
5.4.1 字符串轉布爾類型 51
5.4.2 字符串轉整數類型 52
5.4.3 字符串轉浮點類型 52
5.5 類型別名 52
5.6 本章小結 53
第6章 控制流 54
6.1 倉頡控制流介紹 54
6.2 if表達式 54
6.2.1 使用if和else 55
6.2.2 使用else if 56
6.2.3 if表達式的類型 56
6.3 循環表達式 58
6.3.1 for…in基本用法 58
6.3.2 while表達式 60
6.3.3 do…while表達式 62
6.3.4 break和continue表達式 63
6.4 本章小結 66
第7章 匹配模式 67
7.1 switch與match對比 67
7.2 match表達式 67
7.2.1 含待匹配值的match表達式 67
7.2.2 不含待匹配值的match表達式 70
7.2.3 match表達式的類型 70
7.3 匹配模型 71
7.3.1 常量模式 71
7.3.2 通配符模式 72
7.3.3 變量模式 72
7.3.4 元組模式 73
7.3.5 類模式 73
7.3.6 枚舉模式 74
7.3.7 嵌套組合模式 76
7.4 模式的可反駁性 76
7.4.1 可反駁模式 77
7.4.2 不可反駁模式 77
7.5 本章小結 79
第8章 集合類型 80
8.1 集合類型介紹 80
8.2 Array 80
8.2.1 數組定義 81
8.2.2 訪問數組成員 81
8.2.3 數組元素操作 83
8.2.4 多維數組 83
8.3 ArrayList 84
8.3.1 構造ArrayList 84
8.3.2 訪問ArrayList成員 84
8.3.3 修改ArrayList 86
8.3.4 增加ArrayList的大小 88
8.4 HashSet 89
8.4.1 HashSet初始化 89
8.4.2 訪問HashSet成員 89
8.4.3 HashSet操作 91
8.5 HashMap 92
8.5.1 HashMap初始化 92
8.5.2 訪問HashMap成員 93
8.5.3 HashMap操作 94
8.6 本章小結 96
第9章 函數 97
9.1 函數定義 97
9.1.1 參數列表 97
9.1.2 函數返回值類型 99
9.1.3 函數體 100
9.1.4 函數變量作用域 101
9.1.5 函數體類型 101
9.2 函數類型 102
9.2.1 函數類型作為參數類型 102
9.2.2 函數類型作為返回類型 103
9.2.3 函數類型作為變量類型 103
9.3 嵌套函數 103
9.4 Lambda表達式 104
9.4.1 Lambda表達式定義 104
9.4.2 Lambda表達式調用 105
9.5 函數閉包 105
9.6 函數調用語法糖 106
9.6.1 尾隨閉包 106
9.6.2 流表達式 107
9.7 函數重載 109
9.7.1 函數重載定義 109
9.7.2 函數重載決議 112
9.8 操作符重載 113
9.8.1 操作符重載函數定義和使用 114
9.8.2 可以被重載的操作符 115
9.9 mut函數 116
9.10 遞歸函數 117
9.11 本章小結 118
進 階 篇
第10章 面向對象編程 121
10.1 面向對象程序設計 121
10.1.1 什麽是面向對象編程 121
10.1.2 面向過程與面向對象 121
10.1.3 面向對象編程的特徵 123
10.2 結構體(Struct) 125
10.2.1 如何選擇結構體和類 125
10.2.2 定義結構體 126
10.2.3 構造函數 127
10.2.4 成員變量 129
10.2.5 成員函數 130
10.2.6 成員的可見修飾符 131
10.2.7 創建結構體實例 133
10.2.8 mut函數 134
10.3 類(Class) 135
10.3.1 定義類 136
10.3.2 構造函數 137
10.3.3 成員變量 140
10.3.4 成員函數 141
10.3.5 可見修飾符 142
10.3.6 prop屬性 144
10.3.7 創建對象 147
10.4 抽象類(Abstract Class) 148
10.4.1 抽象類的作用 148
10.4.2 抽象類的定義 148
10.5 類的繼承 149
10.5.1 類的繼承條件 150
10.5.2 抽象屬性和抽象函數 153
10.5.3 單繼承 154
10.5.4 多態性 156
10.5.5 子類調用父類構造函數 156
10.5.6 覆蓋和重定義 158
10.6 接口(Interface) 160
10.6.1 接口特點 160
10.6.2 接口定義 160
10.6.3 接口繼承 164
10.6.4 接口實現 166
10.6.5 Any類型 168
10.7 面向對象案例:貪吃蛇游戲 169
10.7.1 設計類結構 169
10.7.2 創建項目 170
10.7.3 地圖類實現 170
10.7.4 食物類實現 174
10.7.5 蛇類實現 176
10.7.6 玩家類實現 182
10.7.7 編譯和運行 189
10.8 本章小結 190
第11章 泛型 191
11.1 泛型基礎概念 191
11.2 泛型函數 192
11.2.1 全局泛型函數 192
11.2.2 局部泛型函數 194
11.2.3 泛型成員函數 194
11.2.4 靜態泛型函數 195
11.3 泛型結構體 196
11.4 泛型類 197
11.5 泛型枚舉 199
11.6 泛型的類型別名 200
11.7 泛型接口 200
11.7.1 泛型接口格式 200
11.7.2 定義生成器接口 201
11.7.3 定義數據庫操作接口 202
11.8 泛型約束 203
11.8.1 接口約束 204
11.8.2 子類型約束 204
11.9 本章小結 205
第12章 擴展 206
12.1 擴展的定義 206
12.1.1 接口擴展 207
12.1.2 直接擴展 209
12.2 擴展的孤兒規則 210
12.3 擴展的訪問和遮蓋 211
12.4 擴展的導入導出 212
12.4.1 直接擴展的導入導出 213
12.4.2 接口擴展的導入導出 213
12.5 本章小結 215
第13章 錯誤處理 216
13.1 異常(Exception) 216
13.1.1 常見運行時異常 217
13.1.2 異常處理 218
13.2 Option類型用於錯誤處理 221
13.2.1 模式匹配 221
13.2.2 coalescing操作符(??) 222
13.2.3 問號操作符(?) 222
13.2.4 getOrThrow函數 223
13.3 本章小結 223
第14章 模塊管理和包 224
14.1 倉頡包和模塊介紹 224
14.2 模塊管理工具 225
14.2.1 CPM常用命令 225
14.2.2 模塊配置文件 227
14.3 包的定義 229
14.3.1 包的聲明 229
14.3.2 包的成員 232
14.3.3 默認包 232
14.4 包之間相互調用 232
14.4.1 import語句 233
14.4.2 import as語句 233
14.5 本章小結 235
第15章 常用標準包 236
15.1 core包 237
15.2 random包 238
15.2.1 Random類 238
15.2.2 Random使用 238
15.3 time包 239
15.3.1 定時器 239
15.3.2 周期性定時器 240
15.3.3 獲取時間的詳細信息 240
15.3.4 同一時間在不同時區的牆上時間 241
15.3.5 從字符串中解析得到時間 242
15.4 os包 242
15.4.1 獲取各類系統信息 243
15.4.2 文件內容相關操作 244
15.4.3 文件信息相關操作 245
15.4.4 進程相關信息操作 246
15.4.5 進程start及相關函數 247
15.5 io包 248
15.5.1 StringStream 249
15.5.2 FileStream 252
15.5.3 Console 254
15.6 log包 255
15.6.1 SimpleLogger 255
15.6.2 根據日誌級別輸到文件中 257
15.7 JSON包 258
15.7.1 JsonValue 259
15.7.2 JSON中轉義字符處理 264
15.8 serialization包 265
15.8.1 Serializable 265
15.8.2 DataModel 266
15.8.3 DataModelStruct 267
15.8.4 HashSet和HashMap序列化 270
15.9 regex包 272
15.9.1 regex 272
15.9.2 Matcher 274
15.9.3 MatchData 277
15.9.4 RegexOption 279
15.10 url包 280
15.10.1 url包主要接口 280
15.10.2 URL 280
15.10.3 Form 281
15.11 本章小結 282
第16章 單元測試 283
16.1 什麽是單元測試 283
16.2 修飾器宏介紹 284
16.3 編譯與運行測試 284
16.4 修飾類的使用 286
16.4.1 @Test修飾器 286
16.4.2 @Test修飾Top-level函數的使用 288
16.5 自定義邏輯函數的使用 289
16.6 模塊測試和包測試 291
16.7 本章小結 293
高 級 篇
第17章 跨語言互操作 297
17.1 與C語言互操作 297
17.1.1 倉頡調用C函數 297
17.1.2 倉頡與C類型映射 300
17.1.3 C調用倉頡函數 302
17.1.4 通過FFI操作SQLite數據庫 303
17.1.5 通過FFI操作MongoDB數據庫 309
17.2 與Python語言互操作 315
17.2.1 編譯Python源碼獲取動態庫 316
17.2.2 Python的動態庫查找策略 317
17.2.3 Python庫的導入和加載 317
17.2.4 PythonBuiltins內建函數類 319
17.2.5 倉頡與Python類型映射 322
17.2.6 倉頡與Python的註冊回調 333
17.3 本章小結 337
第18章 並發編程 338
18.1 並發與並行 338
18.2 線程和多線程模型 339
18.3 創建一個倉頡線程 340
18.4 等待線程結束並獲取返回值 341
18.4.1 getResult函數返回值 343
18.4.2 設置阻塞結果返回的時間 343
18.5 線程睡眠指定時長 344
18.6 線程的同步機制 344
18.6.1 原子操作 345
18.6.2 可重入互斥鎖 348
18.6.3 Monitor 350
18.6.4 MultiConditionMonitor 352
18.6.5 synchronized關鍵字 354
18.7 本章小結 356
第19章 元編程 357
19.1 宏 358
19.1.1 宏的定義 358
19.1.2 宏的導入 359
19.1.3 非屬性宏 360
19.1.4 屬性宏 362
19.1.5 嵌套宏 364
19.2 Tokens 368
19.2.1 Token類型 368
19.2.2 Tokens類型 371
19.2.3 quote表達式 372
19.3 元編程案例 374
19.3.1 使用宏優化遞歸 374
19.3.2 使用宏打印任意類型 376
19.4 本章小結 379
第20章 網絡編程 380
20.1 網絡參考模型 380
20.1.1 OSI/RM參考模型 380
20.1.2 TCP/IP參考模型 381
20.2 TCP協議 384
20.2.1 TCP協議特點 384
20.2.2 TCP報文段 385
20.2.3 TCP工作流程 386
20.3 Socket編程 388
20.3.1 Socket概念 388
20.3.2 創建TCP服務器端 389
20.3.3 創建TCP客戶端 391
20.4 Socket案例:多人聊天室 393
20.4.1 創建群聊服務器端 394
20.4.2 創建群聊客戶端 399
20.5 HTTP協議 404
20.5.1 HTTP協議介紹 404
20.5.2 創建HTTP服務器端 406
20.5.3 創建HTTP客戶端 411
20.6 HTTP案例:MVC博客 413
20.6.1 博客效果介紹 413
20.6.2 創建項目工程 415
20.6.3 創建博客服務器 416
20.6.4 創建頁面控制器 417
20.6.5 創建數據層 419
20.6.6 創建數據服務層 423
20.6.7 實現數據加載與頁面綁定 426
20.7 本章小結 432
附錄A 操作符 433
IV
V