图书目录

  

  

  

  

  

  

  

  

基  础  篇

第1章  认识新朋友——仓颉语言 3

1.1  伟大的里程碑——仓颉语言的诞生 3

1.1.1  编程语言简述 4

1.1.2  仓颉语言的历史机遇 5

1.1.3  仓颉语言的基本特性 6

1.2  仓颉语言的开发环境 10

1.2.1  编译环境的搭建 11

1.2.2  编辑环境的搭建 25

1.2.3  调试环境的搭建 28

1.3  本章小结 28

1.4  习题 29

第2章  仓颉语言初体验——仓颉语言的基本语法 30

2.1  你好,仓颉! 30

2.1.1  第1个仓颉程序 31

2.1.2  仓颉语言的开发流程 33

2.1.3  语句和语句块 36

2.1.4  注释 38

2.2  变量和数据类型 38

2.2.1  变量与数据类型 39

2.2.2  通过整型学习变量的基本使用方法 42

2.2.3  浮点型的基本使用方法 44

2.2.4  变量的作用域 46

2.3  数值运算 47

2.3.1  操作符和表达式 47

2.3.2  整型的数值运算 48

2.3.3  浮点型的数值运算 51

2.3.4  数值的类型转换 52

2.3.5  复合表达式和括号表达式 53

2.3.6  数值运算实例演练 55

2.4  使用VSCode开发仓颉程序 57

2.5  本章小结 59

2.6  习题 59

第3章  结构化编程——条件结构与循环结构 61

3.1  逻辑运算与关系运算 61

3.1.1  布尔类型 61

3.1.2  逻辑运算 62

3.1.3  关系运算 64

3.2  if表达式 66

3.2.1  if结构 67

3.2.2  if-else结构 68

3.2.3  if表达式的嵌套和else if结构 70

3.2.4  if表达式的值 74

3.3  match表达式与枚举类型 76

3.3.1  match表达式 76

3.3.2  枚举类型enum 84

3.3.3  枚举类型的带参构造器 88

3.4  循环结构 91

3.4.1  区间类型和for in表达式 91

3.4.2  阶乘与复合赋值表达式 94

3.4.3  while表达式 96

3.4.4  do...while表达式 97

3.4.5  死循环 98

3.4.6  循环终止:break和continue 99

3.4.7  循环嵌套 101

3.5  本章小结 102

3.6  习题 103

第4章  让源代码整齐易读——函数与模块化 105

4.1  函数 106

4.1.1  函数的定义和调用 106

4.1.2  函数的参数 110

4.1.3  命名参数的用法 113

4.1.4  函数的返回 115

4.1.5  使用元组模拟函数的多返回值 118

4.1.6  使用Option<T>作为函数的返回值 120

4.1.7  主函数的返回值 123

4.2  函数的递归和重载 124

4.2.1  函数的递归 124

4.2.2  函数的重载 126

4.3  组织源代码 128

4.3.1  多文件编译 129

4.3.2  包 131

4.3.3  模块 135

4.3.4  库 138

4.4  math标准库 139

4.4.1  常数 139

4.4.2  常用数学函数 142

4.5  本章小结 144

4.6  习题 144

第5章  处理文本——字符与字符串 145

5.1  字符和字符编码 145

5.1.1  字符集和字符编码 146

5.1.2  字符 147

5.1.3  字符串 150

5.2  操作字符串 153

5.2.1  字符串的长度和索引 153

5.2.2  字符串的关系运算 156

5.2.3  字符串的包含关系 157

5.2.4  裁剪和连接 158

5.2.5  字符串的高级操作 160

5.2.6  Unicode标准库 162

5.3  字符串的类型转换 166

5.3.1  字符串类型转换的基本思路 166

5.3.2  格式化转换 167

5.3.3  字符串型转其他类型 172

5.4  字符和码点值的转换 174

5.5  基本数据类型大家庭 175

5.5.1  Unit和Nothing 175

5.5.2  基本数据类型小结 176

5.6  本章小结 177

5.7  习题 178

     

提  高  篇

第6章  虚拟的小宇宙——面向对象编程 181

6.1  封装 182

6.1.1  类与对象 183

6.1.2  构造函数 189

6.1.3  静态成员 193

6.1.4  属性 197

6.2  继承 203

6.2.1  类的继承 203

6.2.2  重写和重定义 205

6.2.3  成员的可见修饰符 213

6.2.4  单例类 215

6.2.5  转型 216

6.3  多态 218

6.3.1  通过继承和重写实现多态 219

6.3.2  抽象类 220

6.4  接口和扩展 222

6.4.1  接口 222

6.4.2  通过接口实现多态 227

6.4.3  扩展 228

6.4.4  组合优于继承 231

6.5  本章小结 233

6.6  习题 233

第7章  类型的故事——记录与类型系统 234

7.1  记录类型 234

7.1.1  记录及其构造函数 235

7.1.2  记录的实例 237

7.1.3  记录的成员函数与mut关键字 238

7.1.4  静态成员 240

7.1.5  成员的可见修饰符 242

7.2  值类型与引用类型 244

7.3  关于数据类型的高级操作 246

7.3.1  再探接口与Any类型 247

7.3.2  子类型关系 250

7.3.3  类型判断 251

7.3.4  类型转换 253

7.3.5  类型别名 255

7.4  泛型 255

7.4.1  泛型的基本用法 256

7.4.2  泛型约束 262

7.5  本章小结 265

7.6  习题 265

第8章  同类数据排排队——集合类型 266

8.1  有序集合类型 267

8.1.1  列表 267

8.1.2  数组 274

8.1.3  缓冲区 277

8.1.4  将字符串转换为数组 281

8.1.5  多维有序集合 282

8.2  无序集合类型 284

8.2.1  HashSet 285

8.2.2  HashMap 290

8.3  迭代器 294

8.4  本章小结 296

8.5  习题 296

第9章  读写文件——异常处理与输入输出 298

9.1  异常处理 298

9.1.1  异常 299

9.1.2  捕获异常 299

9.1.3  抛出异常 304

9.1.4  自定义异常 307

9.2  使用Result<T>和Option<T>处理异常 308

9.2.1  使用Result<T>承载异常 308

9.2.2  Option<T>抛出异常 312

9.3  输入与输出 313

9.3.1  文件信息类和目录信息类 314

9.3.2  字符流 315

9.3.3  文件流 321

9.4  位运算与文本文件的读写 327

9.4.1  位运算 327

9.4.2  读写文本文件 332

9.5  标准输入和正则表达式 337

9.5.1  标准输入 337

9.5.2  正则表达式的基本用法 338

9.5.3  模拟用户登录 343

9.6  本章小结 345

9.7  习题 345

第10章  用数学思维来编程——函数式编程 347

10.1  函数类型及其用法 347

10.1.1  函数类型 348

10.1.2  Lambda表达式 350

10.1.3  闭包 352

10.1.4  嵌套函数 354

10.2  函数式编程 355

10.2.1  函数式编程中的函数和变量 355

10.2.2  柯里化与链式调用 356

10.2.3  高阶函数 362

10.3  泛型函数 366

10.4  尾随闭包 369

10.5  再探重载 372

10.5.1  函数重载的高级规则 372

10.5.2  操作符重载 376

10.6  本章小结 382

10.7  习题 382

第11章  让程序多姿多彩——并发和网络编程 383

11.1  并发 383

11.1.1  仓颉线程的创建 384

11.1.2  通过Future<T>实现线程等待 387

11.2  并发的同步机制 389

11.2.1  互斥锁 391

11.2.2  原子操作 398

11.3  Socket通信 404

11.3.1  使用Socket通信 404

11.3.2  群聊应用程序 410

11.4  HTTP服务器和客户端 416

11.4.1  HTTP服务器 416

11.4.2  处理HTTP请求 423

11.4.3  HTTP客户端 433

11.4.4  Cookie和CookieJar 436

11.5  本章小结 442

11.6  习题 442

第12章  关于编程的编程——元编程 443

12.1  词法分析和语法分析 443

12.1.1  词法分析和词法单元 443

12.1.2  词法单元 445

12.1.3  词法单元序列 446

12.1.4  quote表达式 447

12.1.5  抽象语法树 449

12.2  宏 454

12.2.1  非属性宏 455

12.2.2  属性宏 459

12.2.3  宏展开 460

12.3  本章小结 461

12.4  习题 461

     

应  用  篇

第13章  跨语言互操作和2048小游戏 465

13.1  跨语言互操作 465

13.1.1  仓颉语言和C语言的类型映射关系 465

13.1.2  仓颉语言调用C语言函数 466

13.1.3  跨语言调用的高级用法 473

13.1.4  OS库的简单应用 475

13.2  随机数的生成和时间操作 480

13.3  2048小游戏 486

13.3.1  项目需求 486

13.3.2  实现思路 487

13.3.3  具体实现 488

13.4  本章小结 502

13.5  习题 502

第14章  用仓颉语言搭建博客网站 503

14.1  JSON数据与序列化 503

14.1.1  JSON数据的处理 504

14.1.2  序列化和反序列化 511

14.2  搭建博客网站 517

14.2.1  项目需求 517

14.2.2  用户界面层 519

14.2.3  数据访问层 524

14.2.4  业务逻辑层 529

14.3  本章小结 534

14.4  习题 534

附录A  仓颉语言中的关键字 535

附录B  仓颉语言的顶层定义 536

附录C  操作符及其优先级 537

附录D  标准库 539

附录E  TokenKind枚举 540

  

IV

V