书单推荐 新书推荐 |
仓颉编程从入门到实践 读者对象:普通读者 ![]()
随着万物互联以及智能时代的到来,软件的形态将发生巨大的变化。一方面,移动应用和移动互联网领域仍然
强力驱动人机交互、设备协同、智能化、安全性等方向的创新;另一方面,人工智能也同样驱动软件朝智能化、端
边云协同等方向演进。新技术、新场景下应用软件的开发对编程语言提出了新的诉求和挑战。
华为自研的仓颉编程语言作为一款面向全场景应用开发的现代编程语言,通过现代语言特性的集成、全方位的
编译优化和运行时实现,以及开箱即用的工具链支持,为开发者打造了友好开发体验和卓越程序性能。本书主要介
绍仓颉编程语言开发,内容涉及仓颉编程语言的通用编程概念、基本数据类型、类、接口、扩展、模式匹配、泛型、
集合类型、异常处理、包、基础I/O操作、函数式编程、并发编程、宏编程、网络编程、CJPM包管理、自动化测试
等众多话题,可谓仓颉编程语言的“百科全书”。其中,综合实战部分演示了KV数据库、雪花算法、HarmonyOS瀑
布流的实现过程,可以令读者从零开始掌握仓颉编程语言。
本书实例丰富,将理论讲解最终落实到代码实现上。本书内容由浅入深、层层推进、结构清晰、实例丰富、通
俗易懂、实用性强,适合仓颉编程语言的初学者和进阶读者作为自学教程,也可作为培训学校和各大院校的相关专
业的教学参考书。
柳伟卫
---------------------------- 柳伟卫,网名老卫、waylau,在IT公司担任项目经理、架构师、高级技术顾问等职位,是CSDN、 开源中国、阿里云开发者、华为开发者等技术社区专家,慕课网、华为开发者联盟社区认证讲师,HarmonyOS技术达人,曾获2021、2022年度牛人之星、2022年度OpenHarmony开源贡献之星。著有《跟老卫学HarmonyOS开发》等开源书,并出版了《鸿蒙HarmonyOS手机应用开发实战》《鸿蒙HarmonyOS应用开发从入门到精通》《Spring Boot 2.0企业级应用开发实战》《Spring Cloud 微服务架构开发实战》《Spring 5 开发大全》《Cloud Native 分布式架构原理与实践》《大型互联网应用轻量级架构实战》等专著。
第1章 仓颉编程语言初体验
1.1 欢迎进入仓颉编程语言世界 2
1.1.1 仓颉特性 2
1.1.2 高效编程 3
1.1.3 安全可靠 4
1.1.4 轻松并发 4
1.1.5 卓越性能 4
1.2 安装仓颉编程语言 5
1.3 搭建仓颉编程语言开发环境 10
1.4 实战:开发第一个仓颉编程语言应用“Hello World!” 11
1.5 总结 13
1.6 习题:开发“Hello World!”应用 13
第2章 通用编程概念
2.1 变量与常量 15
2.1.1 变量 15
2.1.2 常量 17
2.2 标识符与程序结构 18
2.2.1 标识符 18
2.2.2 程序结构 19
2.3 函数 20
2.3.1 定义函数 21
2.3.2 函数参数 21
2.3.3 函数返回值 23
2.4 注释 24
2.4.1 单行注释 24
2.4.2 多行注释 25
2.5 流程控制 25
2.5.1 分支 25
2.5.2 循环 27
2.6 实战:猜数字游戏 29
2.6.1 输入数字 29
2.6.2 比较大小 30
2.6.3 循环输入 31
2.6.4 运行效果 31
2.7 结构类型 32
2.7.1 定义struct类型 32
2.7.2 创建struct实例 37
2.7.3 mut函数 39
2.8 总结 39
2.9 习题:统计字符串的字符数 40
第3章 基本数据类型
3.1 整数类型 42
3.1.1 整数类型字面量 42
3.1.2 字符字节字面量 43
3.1.3 整数类型支持的操作符 43
3.2 浮点类型 44
3.2.1 浮点类型字面量 44
3.2.2 浮点类型支持的操作符 45
3.3 布尔类型 45
3.3.1 布尔类型字面量 45
3.3.2 布尔类型支持的操作符 46
3.4 字符类型 46
3.4.1 字符类型字面量 46
3.4.2 字符类型支持的操作符 47
3.5 字符串类型 47
3.5.1 字符串字面量 47
3.5.2 插值字符串 48
3.5.3 字符串类型支持的操作 49
3.6 实战:操作字符串 49
3.6.1 构造 50
3.6.2 查找 50
3.6.3 拼接 51
3.6.4 替换 52
3.7 元组类型 52
3.7.1 元组类型字面量 52
3.7.2 元组类型的类型参数 53
3.8 数组类型 53
3.8.1 定义数组 54
3.8.2 访问数组 54
3.8.3 修改数组 55
3.8.4 数组的排序 56
3.8.5 VArray 57
3.9 区间类型 58
3.10 Unit类型 59
3.11 Nothing类型 59
3.12 总结 60
3.13 习题:将包含句号的句子转换为单词 60
第4章 类、接口及扩展
4.1 类 63
4.1.1 class定义 63
4.1.2 this类型 69
4.1.3 创建对象 70
4.1.4 class的继承 71
4.2 接口 76
4.2.1 接口定义 77
4.2.2 接口继承 82
4.2.3 接口实现 84
4.2.4 Any类型 86
4.3 属性 86
4.3.1 属性定义 87
4.3.2 属性使用 91
4.4 子类型关系 93
4.5 类型转换 96
4.5.1 数值类型之间的转换 97
4.5.2 Rune到UInt32和整数类型到Rune的转换 97
4.5.3 is和as操作符 98
4.6 直接扩展 100
4.6.1 扩展概述 100
4.6.2 直接扩展 100
4.6.3 接口扩展 102
4.7 扩展访问规则 105
4.7.1 扩展的修饰符 105
4.7.2 扩展的孤儿规则 106
4.7.3 扩展的访问和遮盖 106
4.7.4 扩展的导入和导出 109
4.8 总结 111
4.9 习题:面向对象的图形 111
第5章 模式匹配
5.1 模式概述 114
5.1.1 枚举类型 114
5.1.2 Option类型 116
5.1.3 常量模式 117
5.1.4 通配符模式 118
5.1.5 绑定模式 118
5.1.6 tuple模式 119
5.1.7 类型模式 120
5.1.8 enum模式 120
5.1.9 模式的嵌套组合 121
5.2 refutable模式和irrefutable模式 122
5.3 match 124
5.3.1 含匹配值的match表达式 124
5.3.2 没有待匹配值的match表达式 125
5.4 if-let 125
5.5 while-let 126
5.6 模式适用场景 127
5.7 实战:猜数字游戏 129
5.7.1 输入数字 129
5.7.2 比较大小 130
5.7.3 循环输入 130
5.7.4 运行效果 131
5.8 总结 132
5.9 习题:“剪刀石头布”游戏 132
第6章 泛型
6.1 泛型概述 134
6.2 实战:泛型函数 134
6.2.1 全局泛型函数 135
6.2.2 局部泛型函数 136
6.2.3 泛型成员函数 136
6.2.4 静态泛型函数 138
6.3 泛型接口 138
6.4 泛型类 139
6.5 实战:泛型结构体 139
6.6 泛型枚举 140
6.7 泛型类型的子类型关系 141
6.8 类型别名 141
6.9 泛型约束 142
6.10 总结 145
6.11 习题:动物发声模拟器 145
第7章 集合类型
7.1 集合类型概述 147
7.2 实战:使用ArrayList 147
7.2.1 ArrayList扩容原理 147
7.2.2 创建ArrayList 148
7.2.3 访问ArrayList成员 148
7.2.4 修改ArrayList 149
7.2.5 增加ArrayList的大小 151
7.3 实战:使用HashSet 152
7.3.1 创建HashSet 152
7.3.2 访问HashSet成员 152
7.3.3 修改HashSet 153
7.4 实战:使用HashMap 154
7.4.1 创建HashMap 154
7.4.2 访问HashMap成员 155
7.4.3 修改HashMap 156
7.5 Iterable和Collections 158
7.6 总结 159
7.7 习题:名字的“漂亮度” 159
第8章 异常处理
8.1 定义异常 161
8.1.1 异常类 161
8.1.2 Exception和Error的主要函数及其说明 162
8.2 常见运行时异常 162
8.3 实战:抛出和处理异常 163
8.3.1 抛出异常 163
8.3.2 普通try表达式 163
8.3.3 try-with-resources表达式 164
8.3.4 多个异常处理 165
8.4 使用Option 166
8.4.1 模式匹配 167
8.4.2 coalescing操作符“??” 167
8.4.3 问号操作符“?” 168
8.4.4 getOrThrow函数 169
8.5 总结 169
8.6 习题:“剪刀石头布”游戏的异常处理 169
第9章 包和模块
9.1 包概述 172
9.2 包的声明 172
9.3 顶层声明的可见性 174
9.4 包的导入 175
9.4.1 使用import语句导入其他包中的声明或定义 175
9.4.2 隐式导入core包 178
9.4.3 使用import as对导入的名字重命名 178
9.4.4 重导出一个导入的名字 180
9.5 程序入口 181
9.6 总结 182
9.7 习题:带传参的“名字的‘漂亮度’” 182
第10章 基础I/O操作
10.1 I/O流概述 184
10.1.1 流的抽象 184
10.1.2 输入流 184
10.1.3 输出流 185
10.1.4 数据流分类 186
10.2 I/O节点流 186
10.2.1 标准流 186
10.2.2 文件流 187
10.3 I/O处理流 189
10.3.1 缓冲流 190
10.3.2 字符串流 191
10.4 实战:读写文件 193
10.4.1 准备文件资源 193
10.4.2 读取文件 193
10.4.3 写入文件 194
10.5 总结 195
10.6 习题:获取文件元数据 195
第11章 函数式编程
11.1 定义函数 197
11.1.1 参数列表 197
11.1.2 函数返回值类型 198
11.1.3 函数体 199
11.2 调用函数 200
11.3 函数类型 202
11.3.1 函数类型的常用示例 203
11.3.2 函数类型的类型参数 203
11.3.3 函数类型作为参数类型 204
11.3.4 函数类型作为返回类型 204
11.3.5 函数类型作为变量类型 204
11.4 Lambda表达式 205
11.4.1 Lambda表达式定义 205
11.4.2 Lambda表达式调用 207
11.5 闭包 207
11.6 函数调用语法糖 211
11.6.1 尾随Lambda 211
11.6.2 Flow表达式 212
11.6.3 变长参数 213
11.7 函数重载 215
11.7.1 函数重载的类型 215
11.7.2 函数重载决议 218
11.8 const函数 219
11.9 实战:词频统计 221
11.9.1 准备文件资源 221
11.9.2 统计词频函数 221
11.9.3 输出词频函数 222
11.9.4 读取文件统计词频 223
11.10 总结 224
11.11 习题:删除字符串中出现次数最少的字符 224
第12章 并发编程
12.1 并发概述 226
12.1.1 线程与并发 226
12.1.2 并发与并行的区别 227
12.1.3 仓颉线程模型 227
12.2 创建线程 228
12.3 访问线程 229
12.3.1 使用Future
你还可能感兴趣
我要评论
|







