初识仓颉编程语言-鸿蒙开发仓颉语法指南

举报
柠檬味拥抱 发表于 2024/07/20 13:24:15 2024/07/20
【摘要】 @[toc] 初识仓颉编程语言仓颉编程语言是一种通用编程语言,专为全场景应用开发设计,能够在保证高开发效率的同时提供优良的运行性能。其简洁高效的语法、多范式编程支持、强类型系统和强大的并发机制,皆为开发者提供了良好的编程体验。本文将带你初步了解仓颉编程语言的特点及其基本使用。 语言特点 1. 简明高效的语法仓颉编程语言设计了许多简明高效的语法,旨在减少冗余代码并提升开发效率。例如:插值字符串...

初识仓颉编程语言

仓颉编程语言是一种通用编程语言,专为全场景应用开发设计,能够在保证高开发效率的同时提供优良的运行性能。其简洁高效的语法、多范式编程支持、强类型系统和强大的并发机制,皆为开发者提供了良好的编程体验。本文将带你初步了解仓颉编程语言的特点及其基本使用。
image.png

语言特点

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

结语

仓颉编程语言以其简洁高效的语法、多范式编程支持、强类型系统和强大的并发机制,成为开发者高效开发的利器。希望本文的介绍能够帮助你快速入门仓颉编程语言,享受编程的乐趣。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。