華為倉頡語言編程從入門到精通

劉陳

  • 出版商: 北京大學
  • 出版日期: 2025-05-01
  • 售價: $654
  • 語言: 簡體中文
  • ISBN: 7301359918
  • ISBN-13: 9787301359914
  • 尚未上市,歡迎預購

商品描述

華為自研的倉頡(Cangjie)語言作為一款面向全場景應用開發的現代編程語言,通過現代語言特性的集成、全方位的編譯優化和運行時實現,以及開箱即用的工具鏈支持,為開發者打造了友好的開發體驗和卓越的程序性能。
本書循序漸進地講解了倉頡語言的核心知識,並通過具體實例的實現過程演練了開發倉頡語言程序的關鍵方法和流程。全書共 19 章,分別講解了從倉頡語言的基礎語法、數據結構、面向對象編程、網絡編程到多線程與並發處理等內容,最後通過實戰項目——圓角圖片視圖庫的開發,系統展示了倉頡語言的核心語法知識和實際應用技巧。
本書通俗易懂而不失技術深度,案例豐富,實用性強,涵蓋了華為開發技術的最新動態和實踐案例,同時涵蓋了其他同類圖書中很少涉及的開發工具與平臺介紹。本書適合華為倉頡編程語言的初學者和進階讀者作為自學教程,也可作為培訓學校和各大院校的相關專業的教學參考書。

作者簡介

劉陳

山東大學計算機通信碩士、HarmonyOS技術專家,現任浪潮信息資深移動開發架構師,精通Java、C、C++、Python、Objective-C、Swift等編程語言,10年Android、iOS開發經驗,5年HarmonyOS開發經驗。曾就職於HTC、聯想,先後擔任過軟件開發工程師、項目經理、產品技術主管等職位。

目錄大綱

第 1 章 倉頡語言基礎介紹 1
1.1  鴻蒙系統介紹 2
1.1.1 鴻蒙系統的發展歷程 2
1.1.2 鴻蒙系統的架構概覽 2
1.1.3 分佈式架構 .3
1.1.4 多設備支持 .3
1.2  倉頡語言介紹 4
1.2.1 倉頡語言的背景和發展歷程 4
1.2.2 倉頡語言的主要特點 5
1.3  倉頡語言的應用場景 6
1.3.1 操作系統和系統級開發 6
1.3.2 智能設備應用開發 .6
1.3.3 物聯網與嵌入式系統 7
第 2 章 搭建倉頡開發環境 8
2.1  系統要求 9
2.2  準備倉頡 SDK 9
2.3  搭建 Visual Studio Code 開發環境 10
2.3.1 安裝 Visual Studio Code 10
2.3.2 配置倉頡環境 .12
2.3.3 第一個倉頡程序 14
2.4  搭建 DevEco Studio 開發環境 18
2.4.1 DevEco Studio 的特點 . 19
2.4.2 下載並安裝 DevEco Studio . 19
2.4.3 配置倉頡環境 .22
第 3 章 基礎語法 26
3.1  標識符和關鍵字 27
3.1.1 標識符 .27
3.1.2 關鍵字 .27
3.2  註釋 28
3.3  常量和變量 29
3.3.1 常量 293.3.2 變量 31
3.3.3 值類型和引用類型變量 33
3.4  操作符 34
3.4.1 算術操作符和賦值操作符 35
3.4.2 比較操作符 36
3.4.3 邏輯操作符 37
3.4.4 位操作符 39
3.4.5 自增和自減操作符 40
3.4.6 操作符的優先級 41
3.5  數據類型 44
3.5.1 整數類型 45
3.5.2 浮點類型 46
3.5.3 布爾類型 47
3.5.4 字符類型 48
3.5.5 字符串類型 50
3.5.6 Unit 類型 54
3.6  類型轉換 55
3.6.1 數值類型轉換 .55
3.6.2 和 Rune 類型相關的轉換 .57
3.6.3 is 和 as 操作符 . 58
3.7  輸入和輸出 59
3.7.1 函數 print 59
3.7.2 函數 println . 61
第 4 章 表達式 63
4.1  條件表達式 64
4.1.1 if 表達式語句 . 64
4.1.2 if…else if…else 表達式語句 . 65
4.1.3 if 表達式語句的類型檢查 . 67
4.1.4 if 表達式語句的嵌套 . 68
4.2  循環結構 69
4.2.1 while 表達式 69
4.2.2 do-while 表達式 72
4.2.3 for-in 表達式 . 74
4.2.4 遍歷區間 76
4.2.5 where 條件 .77
4.2.6 while 表達式的嵌套 78
4.2.7 for-in 表達式的嵌套 . 79
4.3  跳轉表達式 80
4.3.1 break 表達式 80
4.3.2 continue 表達式 81
第 5 章 元組和數組 83
5.1  元組 84
5.1.1 元組的定義 84
5.1.2 元組的操作 85
5.1.3 元組的嵌套 88
5.2 一維數組 91
5.2.1 數組的聲明與創建 91
5.2.2 使用一維數組 .93
5.2.3 數組元素求和 .95
5.3  多維數組 96
5.3.1 多維數組的聲明與創建 96
5.3.2 初始化二維數組的其他方法 100
5.4  VArray 數組 103
5.4.1 定義與聲明 103
5.4.2 VArray 的初始化和操作 .103
5.5  內置 Array 操作函數 105
5.5.1 拷貝與克隆 105
5.5.2 連接與合並 106
5.5.3 翻轉與切片 107
5.5.4 訪問與搜索 108
5.5.5 轉換與輸出 109
5.5.6 比較 110
5.5.7 數組元素數量 111
第 6 章 函數 112
6.1  函數基礎 113
6.1.1 定義函數 .113
6.1.2 參數列表 . 113
6.1.3 函數返回值類型 .115
6.1.4 函數體 118
6.2  調用函數 118
6.2.1 非命名參數的調用 119
6.2.2 命名參數的調用 .119
6.2.3 默認參數的函數調用 120
6.3  函數的嵌套調用和遞歸調用 120
6.3.1 函數的嵌套調用 .120
6.3.2 函數的遞歸調用 .121
6.4  Lambda 表達式 125
6.4.1 Lambda 表達式的定義 125
6.4.2 Lambda 表達式的返回類型 .125
6.4.3 Lambda 表達式的調用 126
6.5  變量作用域 132
6.5.1 局部變量作用域 .133
6.5.2 全局變量作用域 .134
6.5.3 函數作用域 134
6.6  閉包 135
6.6.1 變量捕獲 .135
6.6.2 使用閉包 .136
6.6.3 閉包作用域 140
6.7  函數重載 140
6.7.1 函數重載的規則 .141
6.7.2 函數重載決議 144
6.8  內置函數 146
6.8.1 隨機函數 .146
6.8.2 格式化函數 147
6.8.3 數學運算函數 149
第 7 章 結構 152
7.1  結構體基礎 153
7.1.1 定義結構體 153
7.1.2 結構體的成員變量 154
7.1.3 成員函數 .157
7.1.4 結構體成員的訪問修飾符 160
7.2  結構體實例 161
7.2.1 創建結構體實例 .161
7.2.2 不同類型的結構體成員變量 161
7.2.3 修改結構體的成員變量 .162
7.2.4 結構體的覆制行為 164
7.3 mut 函數 166
7.3.1 mut 函數介紹 . 166
7.3.2 mut 函數的限制 . 168
第 8 章 枚舉 170
8.1  枚舉基礎 171
8.1.1 推出枚舉的背景 .171
8.1.2 定義枚舉類型 171
8.1.3 使用枚舉 .173
8.1.4 match 表達式 .175
8.2  模式匹配 180
8.2.1 常量模式 .180
8.2.2 通配符模式匹配 .181
8.2.3 綁定模式匹配 182
8.2.4 元組模式匹配 183
8.2.5 類型模式匹配 184
8.2.6 枚舉模式匹配 186
8.2.7 模式的嵌套與組合匹配 .186
8.2.8 模式的可匹配性 .189
8.3  可選類型 193
8.3.1 定義 Option 類型 . 193
8.3.2 if-let 表達式 . 195
8.3.3 while-let 表達式 .197
8.3.4 模式和可選類型的關系 .198
第 9 章 面向對象編程 200
9.1  類 201
9.1.1 類和對象的概念 .201
9.1.2 聲明類 201
9.1.3 創建對象 .203
9.1.4 成員變量 .204
9.1.5 構造函數 .206
9.1.6 終結器 209
9.1.7 成員函數 .210
9.2  訪問修飾符 212
9.2.1 訪問修飾符介紹 .212
9.2.2 使用訪問修飾符 .213
9.3  類的繼承 214
9.3.1 繼承的基本概念 .215
9.3.2 實現繼承 .215
9.3.3 super 和 this 216
9.3.4 覆蓋(override)和
重定義(redef) .218
9.3.5 This 類型 .220
9.4  抽象類 221
9.4.1 抽象類的特點 221
9.4.2 定義抽象類 222
9.5  接口 224
9.5.1 定義並實現接口 .224
9.5.2 接口的成員 227
9.5.3 接口的繼承 2299.5.4 接口的默認實現 .231
9.5.5 Any 類型 . 232
9.6  屬性 234
9.6.1 定義屬性 .234
9.6.2 屬性的修飾符 235
9.6.3 抽象屬性 .238
9.7  子類型關系 239
第 10 章 泛型 242
10.1  泛型介紹 243
10.1.1 泛型的常用術語 243
10.1.2 定義泛型 243
10.1.3 泛型約束 246
10.2  泛型函數 246
10.2.1 泛型函數的定義 247
10.2.2 全局泛型函數 248
10.2.3 局部泛型函數 249
10.2.4 泛型成員函數 250
10.2.5 靜態泛型函數 252
10.3  泛型類和接口 253
10.3.1 泛型類 253
10.3.2 泛型接口 254
10.4  泛型結構體 255
10.4.1 泛型結構體的定義 .255
10.4.2 使用泛型結構體 256
10.5  泛型枚舉 259
第 11 章 擴展 262
11.1  擴展介紹 263
11.1.1 編程語言中的擴展 . 263
11.1.2 倉頡語言中的擴展 . 263
11.2  直接擴展 264
11.2.1 實現直接擴展 . 264
11.2.2 針對泛型類型的擴展 . 265
11.2.3 泛型約束的擴展 . 267
11.3  接口擴展 269
11.3.1 實現接口擴展 . 269
11.3.2 同時實現多個接口 . 269
11.3.3 接口擴展中的泛型約束 . 271
11.4  訪問規則 272
11.4.1 擴展的修飾符 . 272
11.4.2 擴展的孤兒規則 . 275
11.4.3 擴展的訪問和遮蓋 . 276
第 12 章 集合 278
12.1  集合介紹 279
12.1.1 集合的基本概念 279
12.1.2 倉頡語言中的集合 .280
12.2  ArrayList 281
12.2.1 ArrayList 介紹 281
12.2.2 添加、遍歷、修改和刪除 .283
12.2.3 排序操作 285
12.2.4 切片操作 287
12.3  HashSet 288
12.3.1 HashSet 介紹 288
12.3.2 添加、遍歷、修改和刪除 .290
12.3.3 排序操作 291
12.3.4 切片操作 293
12.4  HashMap 294
12.4.1 HashMap 介紹 294
12.4.2 添加、遍歷、修改和刪除 .295
12.4.3 切片操作 297
12.5  LinkedList 298
12.5.1 LinkedList 介紹 .298
12.5.2 添加、遍歷、修改和刪除 .300
12.6  TreeMap 301
12.6.1 TreeMap 介紹 . 302
12.6.2 添加、遍歷、修改和刪除 .303
第 13 章 包 306
13.1  包的基礎知識介紹 307
13.1.1 推出包的歷史背景 .307
13.1.2 包的作用 307
13.2  倉頡語言中的包 308
13.2.1 包的聲明 308
13.2.2 頂層聲明的可見性 .309
13.3  包的導入 313
13.3.1 普通的 import 導入 .313
13.3.2 隱式導入 314
13.3.3 導入重命名 .314
13.3.4 重導出一個導入的名字 316
第 14 章 異常處理 318
14.1  初識異常 319
14.1.1 異常的基本概念 319
14.1.2 倉頡語言的異常處理 319
14.1.3 常用的運行時異常 .320
14.2  try 表達式 321
14.2.1 普通的 try 表達式 321
14.2.2 try-with-resources 表達式 .323
14.2.3 CatchPattern 機制 . 326
14.3  用 Option 處理異常 328
14.3.1 模式匹配 328
14.3.2 Coalescing 操作符(??) 329
14.3.3 問號操作符(?) . 331
14.3.4 函數 getOrThrow . 331
第 15 章 並發 334
15.1  並發基礎 335
15.1.1 並發的基本概念 335
15.1.2 並發的特性和實現方式 336
15.1.3 倉頡語言的並發 336
15.2  多線程開發 337
15.2.1 線程介紹 337
15.2.2 創建線程 338
15.2.3 訪問線程 340
15.2.4 訪問線程屬性 34315.2.5 終止線程 344
15.3  線程同步 346
15.3.1 線程同步的意義 346
15.3.2 原子操作 347
15.3.3 可重入互斥鎖 349
15.3.4 Monitor 同步 357
15.3.5 MultiConditionMonitor .361
15.3.6 synchronized 鎖管理 365
15.3.7 線程局部變量 369
第 16 章 I/O 流操作 372
16.1  I/O 流介紹 373
16.1.1 I/O 流的操作類型 373
16.1.2 倉頡語言中的 I/O 373
16.2  標準流 375
16.2.1 標準流介紹 .375
16.2.2 類 Console 375
16.2.3 ConsoleReader 標準讀取 . 376
16.2.4 ConsoleWriter 標準寫入 377
16.3  文件流 379
16.3.1 包 std.fs 介紹 380
16.3.2 File 文件操作 . 380
16.3.3 Directory 文件夾操作 383
16.3.4 結構體 FileInfo .386
16.3.5 結構體 Path .389
16.4  I/O 處理流 393
16.4.1 包 io 介紹 . 393
16.4.2 輸入流和輸出流 394
16.4.3 BufferedInputStream 緩沖區輸入流 395
16.4.4 BufferedOutputStream 緩沖區輸出流 397
16.4.5 ByteArrayStream 字節流 . 398
16.4.6 ChainedInputStream 多輸入流讀取 .400
16.4.7 MultiOutputStream 多輸出流 .401
16.4.8 StringReader 讀取輸入流 402
16.4.9 StringWriter 寫入輸入流 . 404
第 17 章 網絡編程 407
17.1  網絡編程基礎 408
17.1.1 網絡通信協議 408
17.1.2 IP 地址和埠號 409
17.1.3 倉頡語言的網絡編程 . 410
17.2  Socket 編程 410
17.2.1 包 socket . 411
17.2.2 TCP 傳輸處理 412
17.2.3 UDP 傳輸處理 . 416
17.3  HTTP 編程 418
17.3.1 包 net.http . 418
17.3.2 處理客戶端請求 420
17.3.3 Cookie 服務 .424
17.3.4 網絡服務 427
17.3.5 WebSocket 編程 . 431
第 18 章 宏 436
18.1  宏的相關概念 437
18.2  倉頡語言中的宏 437
18.2.1 第一個宏實例 437
18.2.2 Token 類型 439
18.2.3 quote 表達式和插值 441
18.2.4 語法節點 442
18.3  宏的實現 444
18.3.1 非屬性宏 444
18.3.2 屬性宏 447
18.3.3 宏的調用 448
18.3.4 宏的嵌套 449
18.3.5 宏調用中的嵌套宏調用 450
第 19 章  綜合實戰:圓角圖片視圖庫 453
19.1  項目介紹 454
19.1.1 背景介紹 454
19.1.2 項目需求分析 454
19.1.3 項目概述 454
19.2  圓角圖片處理框架 455
19.2.1 工具函數 455
19.2.2 目錄操作和文件操作 456
19.2.3 創建和管理 PixelMap 對象 . 458
19.2.4 圖片縮放類型 461
19.2.5 配置圓角圖片顯示屬性 463
19.3  HarmonyOS 應用包 465
19.3.1 入口邏輯和組件初始化 465
19.3.2 主界面程序 .466
19.3.3 配置文件 467