当前位置: 首页 > news >正文

仓颉编程语言程序基本结构

仓颉编程语言程序基本结构

仓颉程序文件的扩展名为 .cj,这些程序和文件也被称为源代码和源文件。

如果要将仓颉程序编译为可执行文件,需要在顶层作用域中定义一个 main 函数作为程序入口,它可以没有参数,也可以有 Array<String> 类型的参数,它的返回值类型可以是整数类型或 Unit 类型。

☆ 没有参数、返回 Unit 的简单示例:

main() { // 不写返回类型,返回 Unitprintln("Hello, 仓颉!")
}

编译 & 运行输出:

Hello, 仓颉!

☆ 明确指定为整数类型(如Int64),按照编程惯例通常返回 0 表示程序正常结束,这种情况下若不写return 0,会导致编译错误(因为函数承诺返回整数但未履行)。简单示例:

main(): Int64{ println("hello")return 0
}

编译 & 运行输出:

Hello

☆ 接收命令行参数

如果需要获取程序启动时的命令行参数,可以声明和使用 Array<String> 类型参数。示例如下:

main(args: Array<String>): Int64 {println("收到参数个数: ${args.size}")   // 先打印真实长度// 从 0 开始打印所有实参for (i in 0 .. args.size) {println("参数 ${i} = ${args[i]}")}return 0 //习惯写上返回 0 表示正常结束
}

编译后测试:

对于新手而言,测试时需要注意路径问题。说明如下:

①在cmd中,用 cd /d 命令切换到cangjie\runtime\lib\windows_x86_64_llvm的路径(我这里的如下)放入环境变量path中,以后可以省略这一步。

D:\cangjie-sdk-windows-x64-1.0.0\cangjie\runtime\lib\windows_x86_64_llvm

【将cangjie\runtime\lib\windows_x86_64_llvm的路径

否者,报找不到两个.dll文件:libsecurec.dll、libcangjie-runtime.dll 错误,无法继续执行代码。】

②再运行编译生成生成的可执行文件(.exe文件),带路径,如下

C:\Users\Wang\IDEProjects\test_3\target\release\bin\main.exe

运行截图:

☆ 在仓颉程序的顶层作用域中,可以定义一系列的变量、函数和自定义类型(如 struct、class、enum 和 interface 等),其中的变量和函数分别被称为全局变量和全局函数。示例代码:

// 1. 全局变量
let welcome = "你好, 仓颉!"// 2. 全局函数(顶层作用域不需要 func 修饰符)
func add(a: Int64, b: Int64): Int64 {return a + b
}// 3. 自定义枚举类型
enum Color { Red | Green | Blue }// 4. 程序入口
main() {println(welcome)                       // 使用全局变量println("1 + 2 = ${add(1, 2)}")        // 调用全局函数let c = Color.Redlet name = match (c) {case Color.Red   => "Red"case Color.Green => "Green"case Color.Blue  => "Blue"}println("枚举值示例: ${name}")          // 使用自定义枚举类型
}

编译 & 运行输出:

你好, 仓颉!
1 + 2 = 3      
枚举值示例: Red

http://www.dtcms.com/a/302410.html

相关文章:

  • dapp前端⾯试题
  • 数据库审计及安全管理的解决方案
  • OpenCV(05)直方图均衡化,模板匹配,霍夫变换,图像亮度变换,形态学变换
  • 虚拟地址空间:从概念到内存管理的底层逻辑
  • 572. 另一棵树的子树
  • PyTorch武侠演义 第二卷:高塔中的注意力秘境 第1章:残卷指引
  • 11. 若依参数验证 Validated
  • 基于Python和OpenGL的3D暴力摩托游戏完整开发实践
  • Codeforces Round 1039 (Div. 2)题解
  • 架构实战——互联网架构模板(“存储层”技术)
  • redis getshell的三种方法
  • LLM Landscape:2025年大语言模型概览
  • 软工八将:软件开发全流程核心角色体系解析
  • 四、计算机组成原理——第3章:存储系统
  • 分布式渲染效能探析:关键网络性能要素
  • 科技风杂志《科技风》杂志社科技风编辑部2025年第19期目录
  • RWA 正当红,是 DeFi 的终点、拐点,还是新起点?
  • 使用LlamaIndex将私有数据接入大模型
  • 红绿灯纵向距离的评估
  • SpringBoot 发送邮件
  • ServBay 1.15.0 更新,拥抱 Bun Deno 新生态
  • 负载均衡集群HAproxy
  • Claude Launcher:支持Kimi K2的Claude Code可视化启动工具
  • Java面试宝典:MySQL事务底层和高可用原理
  • VUE2 学习笔记11 脚手架
  • 工业前端组件库重构心法:如何让开发效率提升60%的交互模块设计逻辑
  • STM32 USB HOST 驱动FT232 USB转串
  • Flutter在购物场景中BLoC的应用
  • linux安装zsh,oh-my-zsh,配置zsh主题及插件的方法
  • 用了Flutter包体积增大就弃用Flutter吗?包体积与开发效率,这两者之间如何权衡?