初识仓颉编程语言-鸿蒙开发仓颉语法指南
初识仓颉编程语言
仓颉编程语言是一种通用编程语言,专为全场景应用开发设计,能够在保证高开发效率的同时提供优良的运行性能。其简洁高效的语法、多范式编程支持、强类型系统和强大的并发机制,皆为开发者提供了良好的编程体验。本文将带你初步了解仓颉编程语言的特点及其基本使用。
语言特点
1. 简明高效的语法
仓颉编程语言设计了许多简明高效的语法,旨在减少冗余代码并提升开发效率。例如:
- 插值字符串:简化字符串拼接操作
- 主构造函数:统一对象初始化逻辑
- Flow 表达式:简化复杂的条件判断
- match 语句:实现强大的模式匹配功能
- if-let 和 while-let:便捷处理可选值
- 重导出:优化模块导出管理
2. 多范式编程
仓颉编程语言支持多种编程范式,包括:
- 函数式编程:高阶函数、代数数据类型、模式匹配和泛型等
- 面向对象编程:封装、接口、继承和多态等
- 命令式编程:值类型、全局函数等
开发者可以根据具体应用场景灵活选择或混合使用不同的编程范式,充分发挥各范式的优势。
3. 类型安全
仓颉编程语言是一种静态强类型语言,编译器会在编译时进行严格的类型检查,从而降低运行时的风险。此外,强大的类型推断能力进一步减少了显式类型标注的需求,提高了开发效率。
4. 内存安全
仓颉编程语言内置自动内存管理机制,并在运行时进行数组下标越界和溢出检查,确保内存使用的安全性。
5. 高效并发
仓颉编程语言支持用户态轻量级线程(原生协程)及简单易用的并发编程机制,从而保证了并发场景下的高效开发和运行。
6. 兼容语言生态
仓颉编程语言可以与 C 等主流编程语言互操作,并采用便捷的声明式编程范式,实现对其他语言库的高效复用和生态兼容。
7. 领域易扩展
仓颉编程语言提供基于词法宏的元编程能力,支持编译时代码变换。通过尾随 lambda、属性、操作符重载等特性,开发者可以深度定制程序的语法和语义,有利于内嵌式领域专用语言(EDSL)的构建。
8. 助力 UI 开发
基于仓颉编程语言的元编程和尾随 lambda 等特性,可以搭建声明式 UI 开发框架,提升 UI 开发效率和体验。
9. 丰富的内置库
仓颉编程语言提供了功能丰富的内置库,涵盖数据结构、常用算法、数学计算、正则匹配、系统交互、文件操作、网络通信、数据库访问、日志打印、解压缩、编解码、加解密和序列化等功能。
标识符
在仓颉编程语言中,标识符用于命名程序元素。标识符分为普通标识符和原始标识符两类,各自遵循不同的命名规则。
普通标识符
普通标识符不能与仓颉关键字相同,可以由以下两类字符序列组成:
- 以英文字母开头,后接零至多个英文字母、数字或下划线“_”。
- 以一个或多个下划线“”开头,后接一个英文字母,再接零至多个英文字母、数字或下划线“”。
示例:
合法标识符: abc, _abc, abc_, a1b2c3, a_b_c, a1_b2_c3
非法标识符: ab&c, _123, 3abc, while
原始标识符
原始标识符是在普通标识符或仓颉关键字的外面加上一对反引号,用于将关键字作为标识符的场景。
示例:
合法标识符: `abc`, `_abc`, `a1b2c3`, `if`, `while`
非法标识符: `ab&c`, `_123`, `3abc`
程序结构
仓颉程序通常编写在扩展名为 .cj
的文件中。在顶层作用域中,可以定义全局变量、全局函数和自定义类型(如 struct、class、enum 和 interface 等)。要将程序编译为可执行文件,需在顶层作用域中定义一个 main
函数作为程序入口。
示例:
// example.cj
let a = 2023
func b() {}
struct C {}
class D {}
enum E { F | G }
main() {
println(a)
}
变量
仓颉编程语言中的变量由变量名、值和属性构成。变量定义形式为:
修饰符 变量名: 变量类型 = 初始值
常用修饰符包括:
- 可变性修饰符:let(不可变)、var(可变)
- 可见性修饰符:private、public
- 静态性修饰符:static
变量类型可以省略,由编译器推断。例如:
main() {
let a: Int64 = 20
var b: Int64 = 12
b = 23
println("${a}${b}")
}
值类型与引用类型
在仓颉编程语言中,值类型变量和引用类型变量的行为有所不同。值类型变量在赋值时产生拷贝操作,而引用类型变量在赋值时改变引用关系。例如:
struct Copy {
var data = 2012
}
class Share {
var data = 2012
}
main() {
let c1 = Copy()
var c2 = c1
c2.data = 2023
println("${c1.data}, ${c2.data}")
let s1 = Share()
let s2 = s1
s2.data = 2023
println("${s1.data}, ${s2.data}")
}
输出:
2012, 2023
2023, 2023
作用域
仓颉编程语言中,作用域由大括号 {}
构造。顶层作用域中的定义在其内层作用域中有效,但内层作用域中的定义在外层无效。
示例:
func a() {
let b = 2023
func c() {
println(b)
}
c()
}
class A {
let b = 2024
public func c() {
println(b)
}
}
main() {
a()
A().c()
}
输出:
2023
2024
结语
仓颉编程语言以其简洁高效的语法、多范式编程支持、强类型系统和强大的并发机制,成为开发者高效开发的利器。希望本文的介绍能够帮助你快速入门仓颉编程语言,享受编程的乐趣。
- 点赞
- 收藏
- 关注作者
评论(0)