目录
第1章 引言 1
1.1 仓颉语言的起源 1
1.2 仓颉语言的特点 1
1.3 本书面向的读者 2
第2章 第1个仓颉程序 3
2.1 仓颉Hello World程序 3
2.2 编译和运行 4
2.2.1 在Ubuntu系统下编译运行 4
2.2.2 在Windows 10系统下开发仓颉程序 6
2.3 仓颉程序包含的元素 16
第3章 基本类型和运算符 18
3.1 常量和变量 18
3.1.1 常量 18
3.1.2 变量 21
3.2 数据类型 22
3.3 运算符 26
3.3.1 算术运算符 26
3.3.2 关系运算符 27
3.3.3 逻辑运算符 28
3.3.4 其他运算符 28
第4章 基本输入/输出和控制结构 31
4.1 基本输出函数 31
4.2 终端输入/输出 32
4.2.1 终端输入 33
4.2.2 终端输出 34
4.3 控制结构 35
4.3.1 顺序结构 35
4.3.2 选择结构 36
4.3.3 循环结构 40
第5章 函数 46
5.1 函数定义 46
5.1.1 一般函数定义 46
5.1.2 嵌套函数定义 50
5.1.3 重载函数定义 51
5.2 函数调用 51
5.2.1 一般函数调用 52
5.2.2 递归函数调用 54
5.3 函数高级特性 55
5.3.1 函数类型 55
5.3.2 函数类型作为变量类型 56
5.3.3 函数类型作为返回类型 56
5.3.4 函数类型作为形参类型 57
5.3.5 Lambda表达式 57
第6章 结构和枚举类型 59
6.1 结构类型 59
6.1.1 定义结构类型 59
6.1.2 创建使用结构 60
6.1.3 结构成员 61
6.1.4 访问控制 66
6.1.5 结构定义限制 68
6.2 枚举类型 69
6.2.1 枚举类型的基本用法 69
6.2.2 枚举类型的更多用法 72
6.2.3 Option类型 73
第7章 类和对象 76
7.1 定义类 76
7.2 创建使用类对象 77
7.3 类的成员 79
7.4 可见性和写限制 85
第8章 继承和接口 87
8.1 继承 87
8.1.1 定义派生类 87
8.1.2 继承中的构造函数 90
8.1.3 访问权限 91
8.1.4 重载、覆盖和重定义 93
8.2 接口 95
8.2.1 定义接口 95
8.2.2 接口继承 97
8.2.3 接口实现 98
8.2.4 Any接口 100
第9章 类型关系 102
9.1 类和子类型 102
9.2 接口和子类型 103
9.3 函数使用中的子类型 104
9.4 类型转换和类型判断 106
9.4.1 数值类型之间的转换 106
9.4.2 字符和整型之间的转换 107
9.4.3 is和as表达式 107
9.5 类型别名 108
第10章 泛型和常用集合类型 110
10.1 泛型 110
10.1.1 泛型类型 110
10.1.2 泛型函数 114
10.1.3 泛型约束 116
10.2 常用集合类型 118
10.2.1 Array 119
10.2.2 ArrayList 121
10.2.3 HashSet 122
10.2.4 HashMap 124
第11章 属性和扩展 126
11.1 属性 126
11.1.1 定义属性 126
11.1.2 使用属性 129
11.2 扩展 131
11.2.1 扩展的定义 131
11.2.2 扩展限制和使用 133
11.2.3 扩展的作用域 135
第12章 多线程和异常处理 138
12.1 多线程 138
12.1.1 创建线程 138
12.1.2 等待线程 139
12.1.3 线程同步 141
12.2 异常处理 151
12.2.1 异常类型 152
12.2.2 抛出和处理异常 153
第13章 包 158
13.1 声明包 158
13.2 包中顶层声明的可见性 160
13.3 包的导入 162
13.4 多包项目编译 165
13.5 main函数参数 168
第14章 自动微分 169
14.1 微分技术简介 169
14.2 简单的函数自动微分 170
14.3 可微类型 171
14.4 可微函数 172
14.4.1 顶层可微函数 172
14.4.2 非顶层可微函数 174
14.5 自动微分API 176
14.5.1 @Grad表达式 176
14.5.2 @ValWithGrad表达式 178
14.5.3 @AdjointOf表达式 178
14.5.4 stopGradient函数接口 179
14.6 高阶微分 180
第15章 元编程 181
15.1 元编程简介 181
15.2 元编程类型和引述表达式 182
15.2.1 Token类型 182
15.2.2 Tokens类型 183
15.2.3 引述表达式 185
15.3 宏 187
15.3.1 宏定义和调用 187
15.3.2 非属性宏 188
15.3.3 属性宏 189
15.3.4 宏嵌套 191
15.4 元编程示例 193
附录A 仓颉语言中的关键字 196
附录B 仓颉语言中的运算符 197
附录C 仓颉语言提供的包及主要功能说明 199