倉頡語言核心編程——入門、進階與實戰

徐禮文

  • 出版商: 清華大學
  • 出版日期: 2024-07-01
  • 售價: $654
  • 貴賓價: 9.5$621
  • 語言: 簡體中文
  • ISBN: 7302625883
  • ISBN-13: 9787302625889
  • 立即出貨 (庫存 < 3)

  • 倉頡語言核心編程——入門、進階與實戰-preview-1
  • 倉頡語言核心編程——入門、進階與實戰-preview-2
  • 倉頡語言核心編程——入門、進階與實戰-preview-3
倉頡語言核心編程——入門、進階與實戰-preview-1

商品描述

"本書是一本系統闡述倉頡程序設計語言的技術書籍,倉頡程序設計語言是一門由華為公司研發的國產電腦高級編程語言。 全倉頡語言作為新一代的面向應用的全場景編程語言,兼具開發效率和運行性能,並且有極強的領域擴展能力。倉頡語言在設計上廣泛吸收和借鑒了現代編程語言特性,是**面向全場景應用開發的通用編程語言。 本書全面介紹了倉頡語言的語法設計和應用開發,分為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