仓颉编程语言语法概览

仓颉编程语言语法概览

周二 12月 23 2025 仓颉
780 字 · 3 分钟

👉以下内容均来自于仓颉编程语言入门教程_哔哩哔哩_bilibili

一、基础概念

1.1 标识符

7af435bd-dead-45eb-99ac-8dbf0d55c228

1.2 变量

let a = 1后,a的值不能再修改

再执行a = 2会编译报错cannot assign twice to immutable variable

仓颉语法观念中,默认情况下,所有变量初始化后不可变

fd151107-d956-485b-a34a-dbc55ecbee9b

1defc8bb-415a-4f2b-8a07-4ae7e3da7129

1.3 基础数据类型

04bff8e4-fa94-4813-ac35-0d9ac35a3fcd

1.4 表达式

83f42922-9ae2-4369-b744-981e16cdf972

1.4.1 if

e0a0706d-b61f-45ec-a5ed-2e71d14db91b

1.4.2 while

b4b07e37-c805-45a4-94ef-b47b76841cce

1.4.3 for-in

3d1b5e4f-51fb-424b-8bb6-233a59402e07

10234905-6330-4a5c-a209-9fa80ec94db0

1.5 分包

97288699-6dcc-4520-8acf-f0f62055dec7

二、函数

2.1 定义

a3b8be3d-7086-4b76-9e9d-2c08ce023d88

2.2 调用

c95640e1-7425-46ad-b317-c85d2f53a570

2.3 lambda

74d426b0-47a3-47bc-a54e-042fb507557a

2.4 示例

acc06eae-7e62-49da-9082-8f1cb86330ff

三、枚举

通常,我们使用枚举类型来定义一组有关联的符号,在一些场景用来做分类和标记等等,这些符号的字面含义可以增强程序的可读性。仓颉语言的枚举类型不仅支持这种传统用法,还支持定义带参数的枚举项和成员函数等,枚举项的构造参数还支持递归引用枚举类型自身,基于这些特性,使用仓颉语言的枚举类型还能实现代数表达和符号计算等高级功能。

3.1 定义

425f308192ae5b31a58ffe545526f180

在成员函数和成员属性的声明前可以添加一些修饰符 private设置成员仅在枚举类型定义块中可见 public设置成员在枚举定类型定义块内外均可见 static设置成员为静态成员,只能通过枚举类型名访问,默认为实例成员,只能通过枚举实例访问

在成员函数中都能引用枚举项。在实例成员函数中可以引用其他成员,在静态成员函数中只能引用静态成员。

在实例成员函数中可以使用this变量,它代表当前枚举实例,this是不可变变量。

3.2 实例化

1ae7072a-2169-42da-a384-dc7d92e2e968

fd459763-6995-4860-8b35-1f926c78dfc9

3.3 match

枚举类型能支持我们做一些有意义的符号表达和计算,而match表达式就是连接符号和计算的核心特性。

8b9423bd-f591-4f10-a827-bec756d7b392

3.4 应用

76e34110-a6c4-4aef-a218-11121c9fcc34

935dc0ca-170f-4b6c-80c2-e84288abf6a3

3.5 Option

在有些应用场景中,一个变量不能保证在整个生命周期内都被赋予有效值,例如计算过程中出现了异常情况,或者是在一定阶段不需要被初始化等等,为了高效且安全地表达这种“或有或无”的值,仓颉语言提供了Option类型。

8cfaab3e-949e-4e96-80c2-f98c80e3489e

四、结构体

4.1 定义

51f64197-2976-4c0c-8ddd-9f3c4ad2d82e

4ed9b7c3-8687-4657-a71e-b0017cac205d

4.2 访问

4aae2709-38ae-4b63-bbb2-71ea42ac136b

4.3 应用

6053693b-c503-45df-ae10-3b5753207a69

ae6eee91-9d1a-4918-9048-f4bf5a5c3468

898850d6-c0f3-4169-8b30-a6a5670c840e

五、类

5.1 定义

fc955064-af18-4242-be5a-2179c1201dc2

5.2 成员访问

8a44259f-d88b-47ff-9e51-549443a741da

0497c094-61b7-48c5-9882-b9c4acd84d0f

5.3 继承

ff6254b2-c986-4f13-b638-c8433e6f855a

eba736b7-7656-4a48-b6d2-909a6f364499

8bf0bf7f-09c7-4b24-a993-60de840ad125

5.4 属性

5a577780-11ce-4b39-92c3-b0ff2aadb502

5.5 值类型与引用类型

4db82e8e-5ad9-468c-b7e1-fb9ea60f0c32

e444efc5-a41e-49ba-9bac-88588da89956

7d17b3a3-5891-4ce4-ab9c-2d9b79dd285d

六、接口与扩展

6.1 实现接口

1a40e666-d5d9-40f9-a02b-95fb97b22a95

186ef4f5-8e02-4fee-8467-5e1c982a74f7

6.2 扩展

4c65aa30-c1c1-49b6-ac9d-65ce4931471a

f819d39f-3b15-40fd-8516-981105873dd8

七、异常

1c01205f-e13d-49b8-9f2b-1f4eb127f784

7.1 抛出

163d194c-6eb8-4fcb-8bc1-faa6368d315d

7.2 异常处理

f4889c60-454a-4c87-b08c-81e34ffefed2

八、并发

5b47fcfd-1eb9-4ce0-843a-1fc55db40495

8.1 创建线程

ad2d9a07-8cab-4fd2-97a2-10ba5db1fe1b

08191101-2724-47fd-974b-a98006472c53

8.2 估算圆周率(多线程版本)

7100edc9-d1d9-4244-9e73-64aa6650da6d

九、跨语言

229c4276-4f4c-4b52-be1d-3435c45593dc

9.1 C语言

da9d61b2-122f-4b7c-b8e8-9e47e6be24a1

9.2 类型映射

f6f1da76-940b-46b2-aa7b-b7e71172aef8

6ebeb248-f978-4281-a274-7e856067ef53

6fd27717-b092-4fca-81d7-bc9b1aa79f32

9.3 示例

859ba684-0b3d-49ce-ba2b-44ca133d4900

十、宏

在程序编译阶段,会产生很多有用的信息,可用于程序的分析、优化和功能扩展等。为此仓颉提供了“宏”特性,允许开发者介入编译过程,获取部分编译期信息并修改程序,可以实现埋点插桩、静态反射和语法扩展等功能。

a2438666-f3ca-4a23-82e4-8c2d6427a175

10.1 定义

34bfb933-06c1-41fe-9c21-da26b7e13fee

61f92da2-6e71-478a-a770-dae68bd6ba8a

10.2 在编译时修改程序

dba4cd01-fba4-48d6-85d1-3788976267d9

e2b20f8b-7123-443e-a345-7e034314d4e7

10.3 示例

52b4ebf5-631b-463b-b82a-3362acb99316


Thanks for reading!

仓颉编程语言语法概览

周二 12月 23 2025 仓颉
780 字 · 3 分钟