仓颉编程标识符、变量和程序结构【华为根技术】
【摘要】 仓颉语言作为华为推出的新一代编程语言,具有诸多强大的特性。本文将带你快速入门仓颉语言,了解其基本概念、语法和应用。仓颉语言是华为历经五年研发沉淀推出的编程语言,于 2024 年华为开发者大会上正式官宣。它主打原生智能化、天生全场景、高性能、强安全等特点,为开发者打造友好开发体验和卓越程序性能。仓颉语言的名字来自 “仓颉造字”,寄托了团队希望该语言被广大开发者喜爱并广为流传的期望。其文件后缀名...
仓颉语言作为华为推出的新一代编程语言,具有诸多强大的特性。本文将带你快速入门仓颉语言,了解其基本概念、语法和应用。
仓颉语言是华为历经五年研发沉淀推出的编程语言,于 2024 年华为开发者大会上正式官宣。它主打原生智能化、天生全场景、高性能、强安全等特点,为开发者打造友好开发体验和卓越程序性能。
仓颉语言的名字来自 “仓颉造字”,寄托了团队希望该语言被广大开发者喜爱并广为流传的期望。其文件后缀名为.cj,以下是第一个入门代码输出:“你好,仓颉。”
仓颉语言具有高效的数据处理能力、强大的 AI 支持、高度可读的语法和广泛的跨平台支持等特性。在大数据分析和处理任务中,其独特的数据流模型允许开发者以声明式的方式编写数据处理逻辑,简化了代码的复杂度。同时,仓颉语言集成了先进的机器学习和深度学习框架,支持包括 TensorFlow 和 PyTorch 在内的主流 AI 工具,开发者可以通过简洁的语法定义和训练模型,快速实现智能应用。
仓颉语言采用了类似于自然语言的语法结构,使得代码更加直观和易读。无论是经验丰富的开发者还是初学者,都可以轻松上手,提高开发效率。此外,仓颉语言支持多种操作系统和硬件平台,包括 Windows、Linux、macOS 以及华为的自研操作系统 HarmonyOS,开发者可以在不同平台之间无缝迁移代码,实现真正的跨平台开发。
标识符
在仓颉编程语言中,开发者可以给一些程序元素命名,这些名字也被称为“标识符”,标识符分为普通标识符和原始标识符两类,它们分别遵从不同的命名规则。
普通标识符不能和仓颉关键字相同,可以取自以下两类字符序列:
• 由 XID_Start 字符开头,后接任意长度的 XID_Continue 字符
• 由一个_开头,后接至少一个 XID_Continue 字符
其中,XID_Start、XID_Continue 定义见Unicode 标准 。仓颉使用 Unicode 标准 15.0.0。
仓颉把所有标识符识别为 Normalization Form C (NFC) 后的形式。两个标识符如果在 NFC 后相等,则认为是相同的标识符。
例如,以下每行字符串都是合法的普通标识符:
abcd
_abcd
abcd_
a11b2c3
ab_bc_cd
a1_b2_c3
我爱仓颉
__こんにちは
以下每行字符串都是不合法的普通标识符:
acb&c // 使用了非法字符 “&”3abc // 数字不能出现在头部while // 不能使用仓颉关键字
原始标识符是在普通标识符或仓颉关键字的外面加上一对反引号,主要用于将仓颉关键字作为标识符的场景。
例如,以下每行字符串都是合法的原始标识符:
`abcd`
`_abcd`
`a21b12c13`
`if`
`while`
`à֮̅̕b`
以下每行字符串,由于反引号内的部分是不合法的普通标识符,所以它们整体也是不合法的原始标识符,例如:
`abc&d`
`4acd`
程序结构
通常,我们都会在扩展名为.cj 的文本文件中编写仓颉程序,这些程序和文件也被称为源代码和源文件,在程序开发的最后阶段,这些源代码将被编译为特定格式的二进制文件。
在仓颉程序的顶层作用域中,可以定义一系列的变量、函数和自定义类型(如 struct、class、enum 和 interface 等),基础数据类型和 struct 等类型属于值类型,而 class 和 Array 等类型属于引用类型。
// example.cj let a = 2023 func b() {} struct C {} class D {} enum E { F | G } main() { println(a) } |
在非顶层作用域中不能定义上述自定义类型,但可以定义变量和函数,称之为局部变量和局部函数。特别地,对于定义在自定义类型中的变量和函数,称之为成员变量和成员函数。
变量
变量将一个名字和一个特定类型的值关联起来。
当初始值具有明确类型时,可以省略变量类型标注,编译器会自动推断出变量类型。
在定义仓颉变量时,可变性修饰符是必要的,在此基础上,还可以根据需要添加其他修饰符。
- 变量名应是一个合法的仓颉标识符。
- 变量类型指定了变量所持有数据的类型。当初始值具有明确类型时,可以省略变量类型标注,此时编译器可以自动推断出变量类型。
- 初始值是一个仓颉表达式,用于初始化变量,如果标注了变量类型,需要保证初始值类型和变量类型一致。在定义全局变量或静态成员变量时,必须指定初始值。在定义局部变量或实例成员变量时,可以省略初始值,但需要标注变量类型,同时要在此变量被引用前完成初始化,否则编译会报错。
案例
变量估算圆周率
main(){
pi=2.7
println("pi=${pi}")
}
将代码修改为:
main(){
let pi:Float64=3.14
// pi=2.7
println("pi=${pi}")
}
总结:
1. 理解标识符命名规则及其重要性
学习了标识符的命名规则,包括必须以字母或下划线开头,后续字符可以是字母、数字或下划线,且区分大小写。理解了合法和非法标识符的区别,以及如何通过原始标识符在特殊情况下使用关键字作为标识符。这提高了代码的可读性和可维护性,减少了命名冲突的可能性。
2. 掌握变量的定义与分类
熟悉了变量的定义方式,包括可变性修饰符(let 和 var)和可见性修饰符(private 和 public)。了解了值类型和引用类型的区别,值类型在赋值时会拷贝值本身,而引用类型则复制引用地址。通过实际示例,能够正确选择和使用不同类型的变量来优化程序性能。
3. 熟悉程序结构及其组成部分
掌握了仓颉语言的程序结构,变量、函数和自定义类型(如 struct、class、enum 和 interface 等)。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)