华为仓颉编程语言简介与快速实验上手图解
华为仓颉编程语言简介与快速实验上手图解。华为仓颉编程语言语法简介与示例华为仓颉编程语言是由华为自主研发的新一代编程语言,专为鸿蒙生态全场景智能应用开发设计。该语言具有静态类型、多范式、语法简洁和安全并发等特点,提供基本数据类型、流程控制、函数定义等核心功能。
华为仓颉编程语言简介与快速实验上手图解
仓颉编程语言是华为自主研发的新一代通用编程语言,由南京大学冯新宇教授团队主导设计,于 2024 年华为开发者大会(HDC)正式发布,并在 2025 年 7 月推出首个长期支持版本(LTS 1.0.0)。其核心定位是面向全场景智能应用开发,尤其聚焦鸿蒙生态,定位是“鸿蒙生态的下一代主力语言”。
仓颉(Cangjie)是一门 静态类型、多范式、语法简洁、安全并发 的现代化编程语言,面向鸿蒙全场景设计。
仓颉编程语言目前(2025-07-19)尚处于测试快速发展阶段,官方为 Windows / macOS / Linux 三大桌面系统提供了统一的 SDK + 插件 安装方案。如 VS Code 路线,或者在仓颉编程官网上下载 CodeArts IDE for Cangjie,任选其一即可。
新手若嫌上面这个有些麻烦,可用在线编辑器尝鲜体验:
https://cangjie-lang.cn/playground
注意,目前(2025-07-19)在线体验版本:0.53.18,并且,官方提示,在线体验版出于对在线体验功能的稳定性以及安全性的考虑,禁止了部分系统调用;在线体验环境因安全策略限制,无法直接使用原生stdin操作,输入输出场景受限。下面演示的代码就在此线体验版本中测试通过。【笔者对比测试后,建议新手尽可能从官网上下载 CodeArts IDE for Cangjie,配置简单,可以使用比较新近的仓颉编程语言,体验更好。后面介绍。】
仓颉编程语言基本结构
所有源码文件以 .cj 结尾,顶层可写变量、函数、类型;必须有 main() 作为入口。
// hello.cj
main() {
println("Hello, Cangjie!")
}
参见下图:
这个在线体验版,使用比较直观,就不多说了,试试很快就能上手。
变量与基本类型
关键字 |
作用 |
示例 |
let |
不可变 |
let pi = 3.1415 |
var |
可变 |
var n: Int64 = 10 |
类型推断 |
可省略类型 |
val s = "text" // 编译器推断为 String |
示例源码:
// basic_types.cj
main() {
let a: Int8 = 127 // 8 位有符号
var b: UInt32 = 42u32 // 无符号 32 位
//a = 64 //不允许
b = 100
println("整型示例:")
println(" a = ${a}, b = ${b}")
}
运行输出:
整型示例:
a = 127, b = 100
下面给出更多数据类型的例子:
包括常用基本类型(包括整型、浮点型、布尔型、字符型、字符串、数组、元组、可选类型)以及 变量声明方式(let、var、类型推断、显式类型标注)。
main() {
// 1. 整型
let a: Int8 = 127 // 8 位有符号
var b: UInt32 = 42u32 // 无符号 32 位
let c = -100_000 // 编译器推断 Int64
// 2. 浮点型
let pi: Float32 = 3.14f32 // 32 位浮点
let e = 2.71828 // 编译器推断 Float64
// 3. 布尔型
let flag: Bool = true
// 4. 字符型(Unicode 标量)
let ch: Rune = '😊'
// 5. 字符串
let s1 = "仓颉"
let s2: String = "Cangjie"
// 6. 数组
let arr: Array<Int64> = [1, 2, 3, 4]
// 7. 元组
let tup: (String, Int64, Bool) = ("Alice", 18, false)
// 8. 可选类型(Option)
let maybe: Option<Int64> = Some(99)
let none: Option<Int64> = None
// 9. 输出
println("整型示例:")
println(" a = ${a}, b = ${b}, c = ${c}")
println("浮点示例:")
println(" pi = ${pi}, e = ${e}")
println("布尔示例:")
println(" flag = ${flag}")
println("字符示例:")
println(" ch = ${ch}")
println("字符串示例:")
println(" s1 = ${s1}, s2 = ${s2}")
println("数组示例:")
for (item in arr) {
print("${item} ")
}
println()
println("元组示例:")
let (name, age, vip) = tup
println(" name=${name}, age=${age}, vip=${vip}")
println("可选类型示例:")
match (maybe) {
case Some(v) => println(" maybe = Some(${v})")
case None => println(" maybe = None")
}
match (none) {
case Some(v) => println(" none = Some(${v})")
case None => println(" none = None")
}
}
运行输出:
整型示例:
a = 127, b = 42, c = -100000
浮点示例:
pi = 3.140000, e = 2.718280
布尔示例:
flag = true
字符示例:
ch = 😊
字符串示例:
s1 = 仓颉, s2 = Cangjie
数组示例:
1 2 3 4
元组示例:
name=Alice, age=18, vip=false
可选类型示例:
maybe = Some(99)
none = None
流程控制
先给出简单示例
// flow_demo.cj
main() {
let n = 7
if (n % 2 == 0) {
println("${n} 是偶数")
} else {
println("${n} 是奇数")
}
}
运行输出:
7 是奇数
下面给出一个包含多种控制表达式【注】的示例
包括仓颉语言中常用的 if/else、while、for-in、match、break/continue 。
【注:仓颉作为一门融合了现代编程语言设计理念的语言,确实弱化了传统 “语句” 与 “表达式” 的界限,例如条件分支( if-else)、循环( while、for) 、异常处理(try)、控制转移(break、continue)都是表达式】
main() {
let n = 7
// 1. if / else
if (n % 2 == 0) {
println("${n} 是偶数")
} else {
println("${n} 是奇数")
}
// 2. while
var i = 1
while (i <= n) {
print("${i} ")
i += 1
}
println()
// 3. for-in + continue + break
println("3 的倍数提前结束:")
for (k in 1..=10) {
if (k % 3 != 0) {
continue
}
if (k > 6) {
break
}
println(" -> ${k}")
}
// 4. match:把区间拆成多条 case
match (n) {
case 1 => println("one")
case 2 => println("small")
case 3 => println("small")
case 4 => println("small")
case 5 => println("small")
case 6 => println("medium")
case 7 => println("medium")
case 8 => println("medium")
case 9 => println("medium")
case _ => println("large")
}
}
运行输出:
7 是奇数
1 2 3 4 5 6 7
3 的倍数提前结束:
-> 3
-> 6
medium
函数
仓颉使用关键字 func 来表示函数定义的开始,func 之后依次是函数名、参数列表、可选的函数返回值类型、函数体。
仓颉编程语言函数及调用示例
// func_basic.cj
import std.io.*
// 1. 无返回值
func greet(name: String) {
println("Hello, ${name}!")
}
// 2. 有返回值 + 默认参数
func add(a: Int64, b: Int64): Int64 {
return a + b
}
main() {
greet("Alice") // 调用 1
let sum = add(5, 6) // 调用 2(b 使用默认值 10)
println("add(5, 6) 结果 = ${sum}")
}
运行输出:
Hello, Alice!
add(5, 6) 结果 = 11
CodeArts IDE for Cangjie 使用简介
CodeArts IDE for Cangjie是华为推出的一款智能化、可扩展的集成开发环境,专门支持仓颉编程语言的开发。目前升级仓颉语言至LTS版本1.0.0 。
【CodeArts IDE 是华为云推出的一款面向开发者、支持多种语言(如 Python、Java、C++)的 IDE。】
下载页面 https://cangjie-lang.cn/download
我的操作系统是win10中,下载安装的安装版是
双击运行安装,过程比较简单略
安装完后,第一次使用需要配置SDK,目前可用(LTS版)Cangjie 1.0.0,参见下图:
之后,可以使用了,运行CodeArts IDE for Cangjie 自带的示例效果:
细心的读者,可能发现代码的顶端有一句package demo,什么意思?有何作用?
把当前源文件归属到名为 demo 的包(package)。
它是包声明语句(Package Declaration),它的作用与 Java、Rust 等语言中的包(模块)声明类似,主要用于组织代码结构、避免命名冲突、控制访问权限。
下面是运行交互测试代码效果:
交互测试代码:
import std.env.*
main() {
getStdOut().write("请输入信息:")
var c = getStdIn().readln() // 输入如:abc
var r = c.getOrThrow()
getStdOut().write("输入的信息为:")
getStdOut().writeln(r)
return
}
【这段代码可在CodeArts IDE for Cangjie运行,但在当前的在线体验版中运行报错。】
CodeArts IDE for Cangjie新建工程(Project)步骤
CodeArts IDE 提供了一个 Cangjie 项目向导,帮助您更轻松地创建新项目并配置环境。使用步骤:
步骤1、 在主菜单中,选择文件 > 新建 > 工程(Project) 。
步骤2、 在打开的“新建工程”对话框中,从左侧列表选择“Cangjie“,填入项目参数。参见下图:
设置项目名称和路径。
在“产物类型”的下拉框中选择“executable”、“static”、 “dynamic” 选项,生成不同的产物,使用默认executable即可。
步骤3、 单击“创建”按钮,将自动产生一段简单的示例代码。
步骤4、把 main.cj 内容替换为你的代码。注意保留顶端的package语句。
附、CodeArts IDE for Cangjie 切换中文/英文界面语言的常用办法
1. 打开 IDE。
2. 按 Ctrl + Shift + P(Windows系统)呼出 命令面板。
3. 输入/选择 Configure Display Language 或 配置显示语言。
4. 在下拉列表里选 “English” 或 “中文(简体)”,回车。
5. IDE 会提示窗口,点击 Restart或 重启按钮可立即生效。
本篇至此OK!
以后面将继续写这个系列。
更多推荐
所有评论(0)