一键导入
cangjie-annotation
仓颉语言内置注解。当需要了解仓颉 SDK 提供的内置注解(@sourcePackage/@sourceFile/@sourceLine/@When/@FastNative/@Frozen/@Attribute/@Deprecated)的用途、语法和最优实践时,应使用此 Skill。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
仓颉语言内置注解。当需要了解仓颉 SDK 提供的内置注解(@sourcePackage/@sourceFile/@sourceLine/@When/@FastNative/@Frozen/@Attribute/@Deprecated)的用途、语法和最优实践时,应使用此 Skill。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
当需要构建鸿蒙应用项目时,使用此 Skill 执行构建流程。此 Skill 包含完整的构建命令、构建流程说明、构建失败处理流程。构建脚本会自动执行依赖安装、仓颉预编译、资源生成、编译、打包等步骤。
在鸿蒙应用(Cangjie)开发中,当需要使用 stdx 拓展库(如 crypto、encoding、net、log、actors 等),或在构建/链接阶段出现 stdx 相关错误时,使用此 Skill 获取/解压 stdx 包,并指导在 entry/cjpm.toml 中正确配置 bin-dependencies.path-option。
在进行仓颉工程或鸿蒙应用开发时的第一步,应该优先读取该SKILL,用来确定后续的开发步骤。
仓颉语言附录参考。当需要查阅仓颉语言的关键字列表、运算符优先级与结合性、运算符重载函数签名、运行时环境变量配置、包兼容性规则、TokenKind枚举类型时,应使用此 Skill。
仓颉标准库 Array 类型详细指南。当需要了解 Array 的构造、元素访问、切片、拼接、查找、排序、拷贝、反转、映射、扁平化等操作的完整 API 和用法时,应使用此 Skill。
仓颉标准库 ArrayList 类型详细指南。当需要了解 ArrayList 的构造、增删改查、容量管理、切片、排序、迭代、与 Array 互转等操作的完整 API 和用法时,应使用此 Skill。
| name | cangjie-annotation |
| description | 仓颉语言内置注解。当需要了解仓颉 SDK 提供的内置注解(@sourcePackage/@sourceFile/@sourceLine/@When/@FastNative/@Frozen/@Attribute/@Deprecated)的用途、语法和最优实践时,应使用此 Skill。 |
仓颉 SDK 提供了一组内置注解,开发者可直接作为工具使用,无需自行实现宏。它们涵盖源码定位、条件编译、性能优化、ABI 稳定性、元数据标记和废弃管理等场景。
获取当前代码位置信息,常用于日志、调试和错误报告。
| 注解 | 返回类型 | 说明 |
|---|---|---|
@sourcePackage() | String | 当前包名 |
@sourceFile() | String | 当前文件名 |
@sourceLine() | Int64 | 当前行号 |
func logError(msg: String) {
let pkg = @sourcePackage()
let file = @sourceFile()
let line = @sourceLine()
println("[ERROR] ${pkg}/${file}:${line} - ${msg}")
}
@When根据编译条件选择性编译代码,用于平台适配、特性选择和调试支持。
@When[condition]
条件表达式支持:
os == "Linux" / os == "Windows" / os == "macOS" — 操作系统判断arch == "x86_64" / arch == "aarch64" — 处理器架构判断debug / !debug — 调试/发布模式&&、||、!@When 在顶层声明上条件选择,减少代码内部的条件分支@When 切换实现,而非在函数体内散布条件编译块@When[os == "Linux"]
func getPlatformName(): String {
return "Linux"
}
@When[os == "Windows"]
func getPlatformName(): String {
return "Windows"
}
@When[os == "macOS"]
func getPlatformName(): String {
return "macOS"
}
@FastNative优化 foreign 声明函数的 C 互操作调用开销。
@FastNative
foreign func c_function_name(param: CInt): CInt
被标记的 C 函数必须满足:
cjprof 性能分析确认热点后再标记,避免过早优化// 适合:简单数学计算
@FastNative
foreign func fast_add(a: CInt, b: CInt): CInt
// 不适合:可能阻塞的 I/O 操作
// @FastNative // ← 不要这样做
foreign func read_file(path: CPointer<UInt8>): CInt
@Frozen标记函数或属性为跨版本不可变(签名和实现体均不可变),用于保证 ABI 稳定性。
@Frozen
public func stableApiVersion(): String {
return "1.0.0"
}
@Attribute为声明添加元数据属性,可在运行时通过反射读取。
// 标识符形式
@Attribute[State]
var cnt = 0
// 字符串形式
@Attribute["Binding"]
var bcnt = 0
TypeInfo.findAnnotation 反射 API 读取属性值@Attribute[Serializable]
class UserConfig {
@Attribute["json_name:user_id"]
var userId: String = ""
@Attribute["json_name:display_name"]
var displayName: String = ""
}
@Deprecated标记 API 为已弃用,引导开发者迁移到新 API。
| 参数 | 类型 | 说明 |
|---|---|---|
message | String | 迁移指南,说明替代方案 |
since! | ?String | 弃用起始版本(可选) |
strict! | Bool | false = 编译警告(默认),true = 编译错误 |
message 中必须说明替代方案,而非仅提示"已弃用"strict!: false(警告),给下游充分迁移时间;在后续版本升级为 strict!: true(错误)since! 始终填写版本号,方便追溯弃用时间线@Deprecated[message: "请使用 newConnect(),旧接口将在 v3.0 移除",
since!: "2.1.0",
strict!: false]
public func oldConnect(host: String): Connection {
return newConnect(host)
}