图书目录

入门篇

第1章仓颉语言简介

1.1仓颉语言的由来

1.2仓颉语言的特点

第2章仓颉开发准备(12min)

2.1安装仓颉工具链

2.1.1Linux

2.1.2Windows

2.2安装VS Code及仓颉插件

2.3仓颉插件的使用

2.3.1仓颉项目结构

2.3.2语言插件的使用

第3章第一个仓颉程序(6min)

3.1运行Hello World程序

3.2仓颉程序基本规则

3.3仓颉程序的编译

第4章基本数据类型与操作符(21min)

4.1标识符与关键字

4.1.1标识符

4.1.2关键字

4.2变量

4.3基本数据类型

4.3.1整数类型

4.3.2浮点类型

4.3.3布尔类型

4.3.4字符类型

4.3.5字符串类型

4.3.6Unit类型

4.3.7元组类型

4.3.8区间类型

4.3.9Noting类型

4.4基本数据类型转换

4.4.1数值类型之间的转换

4.4.2Char和UInt32 之间的转换

4.4.3类型判断

4.5操作符

4.5.1算术操作符

4.5.2逻辑操作符

4.5.3位操作符

4.5.4关系操作符

4.5.5赋值操作符

4.5.6操作符的优先级

第5章函数(23min)

5.1函数的定义

5.2参数及函数调用

5.3返回值类型

5.4函数体

5.5嵌套函数(局部函数)

第6章流程控制(7min)

6.1条件表达式

6.2循环表达式

6.3match表达式

第7章入门综合实例

7.1开发需求

7.1.1斐波那契数列

7.1.2要解决的问题

7.2解决思路

7.2.1问题分析

7.2.2递归函数

7.3示例代码

进阶篇

第8章struct类型(19min)

8.1长方体引发的思考

8.2struct类型的定义

8.3成员变量

8.4构造函数

8.4.1普通构造函数

8.4.2主构造函数

8.4.3自动生成的无参构造函数

8.5成员函数

8.6可见修饰符

8.7实例的创建与访问

8.8mut函数

8.9成员属性

8.9.1属性的定义

8.9.2属性的使用

第9章class类型(12min)

9.1定义

9.2成员变量

9.3构造函数

9.3.1普通构造函数

9.3.2主构造函数

9.3.3自动生成的无参构造函数

9.4成员函数

9.5成员属性

9.6可见性修饰符

9.7对象

9.7.1对象的创建与访问

9.7.2对象值的修改

9.8抽象类

9.9继承

9.9.1继承的定义

9.9.2覆盖和重定义

9.9.3super关键字

9.9.4成员可见性

第10章enum类型

10.1enum类型的定义

10.2enum类型的值

10.3enum类型的使用

10.4有参构造器

第11章接口(10min)

11.1为什么需要接口

11.2接口的定义

11.3接口的实现

11.3.1接口的通常实现

11.3.2接口的默认实现

11.4接口的继承

11.5类型的多接口实现

11.6典型的内置接口

11.6.1Any类型

11.6.2ToString接口

第12章泛型(17min)

12.1什么是泛型

12.2泛型接口

12.3泛型函数

12.4泛型约束

12.5泛型类型

12.5.1泛型class

12.5.2泛型struct

12.5.3泛型enum

12.5.4区间类型

第13章包管理

13.1包的声明

13.2顶层声明的可见性

13.3包的导出和编译

13.4包的导入

13.4.1import语句导入

13.4.2导入重命名

第14章扩展(6min)

14.1扩展的定义

14.2泛型扩展

14.3接口扩展

第15章基础集合类型(8min)

15.1Array

15.1.1Array的定义

15.1.2访问Array

15.1.3修改Array

15.1.4Array的高级用法

15.1.5字节数组字面量

15.2ArrayList

15.2.1ArrayList的定义

15.2.2访问ArrayList

15.2.3修改ArrayList

第16章函数的进阶用法(20min)

16.1函数重载

16.1.1函数重载的定义

16.1.2函数重载决议

16.2函数遮盖

16.3操作符重载

16.3.1操作符重载的必要性

16.3.2操作符重载的定义

16.3.3索引操作符

16.3.4可以被重载的操作符

16.4函数是第一类对象

16.4.1什么是第一类对象

16.4.2函数类型的定义

16.4.3函数作为参数

16.4.4函数作为变量

16.4.5函数作为返回值

第17章类型关系

17.1多态

17.2子类型关系

17.2.1继承带来的子类型关系

17.2.2实现接口带来的子类型关系

17.2.3元组类型的子类型关系

17.2.4函数类型的子类型关系

17.2.5预设子类型关系

17.2.6传递性带来的子类型关系

17.2.7泛型类型的子类型关系

17.3类型转换

17.3.1is操作符

17.3.2as操作符

17.4类型别名

第18章异常

18.1异常的定义

18.2异常处理

18.3自定义异常

18.4Option值的解构

18.4.1getOrThrow()函数

18.4.2??操作符

第19章基础类库

19.1格式化库

19.1.1整型、浮点型类型

19.1.2字符类型

19.2Console类

19.2.1ConsoleReader

19.2.2ConsoleWriter

19.3Random类

19.4数学库

19.4.1常数

19.4.2函数

19.5转换库

19.6base64包

19.7hex包

19.8时间库

19.8.1Month枚举

19.8.2DayOfWeek枚举

19.8.3Duration类

19.8.4TimeZone

19.8.5DateTime

19.8.6时间格式

第20章字符及字符串处理

20.1字符处理

20.2字符串处理

20.2.1字符串转数组

20.2.2指定位置字符获取

20.2.3子字符串获取

20.2.4字符查找

20.2.5子字符串查找

20.2.6字符串修整

20.2.7字符串分隔

20.2.8字符串判断

20.2.9字符串连接

20.2.10字符串替换与反转

20.3猜数字小游戏

第21章高级集合类型(10min)

21.1Hashable接口

21.2HashSet集合

21.2.1HashSet的定义

21.2.2访问HashSet

21.2.3修改HashSet

21.2.4HashSet的容量和元素个数

21.3HashMap集合

21.3.1 HashMap的定义

21.3.2访问HashMap

21.3.3修改HashMap

21.3.4其他常用函数

21.3.5综合应用示例

第22章模式匹配

22.1match表达式

22.1.1pattern guard

22.1.2match表达式类型

22.2模式

22.2.1常量模式

22.2.2通配符模式

22.2.3变量模式

22.2.4元组模式

22.2.5类型模式

22.2.6枚举模式

高级篇

第23章函数的高级用法(19min)

23.1Lambda表达式

23.1.1Lambda表达式的定义

23.1.2Lambda表达式的返回值

23.1.3Lambda表达式的调用

23.2闭包

23.2.1闭包的定义

23.2.2捕获变量的状态

23.2.3可变变量的闭包

23.3函数调用语法糖

23.3.1尾随闭包

23.3.2管道表达式

23.3.3组合操作符

第24章并发(18min)

24.1仓颉线程

24.1.1线程睡眠函数sleep

24.1.2创建仓颉线程

24.1.3等待线程结束并获取返回值

24.2同步

24.2.1数据竞争

24.2.2原子操作

24.2.3互斥锁

24.2.4监视器

24.2.5synchronized关键字

第25章文件处理

25.1FileInfo

25.2File

25.3Directory

25.4文件读写示例

第26章仓颉编译器(14min)

26.1编译演示代码

26.2编译选项

26.3条件编译

26.3.1使用方式

26.3.2内置编译条件

26.3.3自定义编译条件

26.3.4多条件编译

第27章仓颉调试器(26min)

27.1仓颉调试器演示代码

27.2调试版本的编译

27.3启动调试的方式

27.4调试命令

27.4.1断点

27.4.2观察点

27.4.3启动

27.4.4执行

27.4.5变量

27.4.6退出