بنقرة واحدة
cangjie-generic
仓颉语言泛型。当需要了解仓颉语言的泛型函数、泛型类、泛型接口、泛型结构体、泛型枚举、泛型约束(where)、泛型子类型关系、型变(不变/协变/逆变)、类型别名(type)等特性时,应使用此 Skill。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
仓颉语言泛型。当需要了解仓颉语言的泛型函数、泛型类、泛型接口、泛型结构体、泛型枚举、泛型约束(where)、泛型子类型关系、型变(不变/协变/逆变)、类型别名(type)等特性时,应使用此 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,用来确定后续的开发步骤。
仓颉语言内置注解。当需要了解仓颉 SDK 提供的内置注解(@sourcePackage/@sourceFile/@sourceLine/@When/@FastNative/@Frozen/@Attribute/@Deprecated)的用途、语法和最优实践时,应使用此 Skill。
仓颉语言附录参考。当需要查阅仓颉语言的关键字列表、运算符优先级与结合性、运算符重载函数签名、运行时环境变量配置、包兼容性规则、TokenKind枚举类型时,应使用此 Skill。
仓颉标准库 Array 类型详细指南。当需要了解 Array 的构造、元素访问、切片、拼接、查找、排序、拷贝、反转、映射、扁平化等操作的完整 API 和用法时,应使用此 Skill。
| name | cangjie-generic |
| description | 仓颉语言泛型。当需要了解仓颉语言的泛型函数、泛型类、泛型接口、泛型结构体、泛型枚举、泛型约束(where)、泛型子类型关系、型变(不变/协变/逆变)、类型别名(type)等特性时,应使用此 Skill。 |
function、class、interface、struct、enum| 术语 | 含义 |
|---|---|
| 类型形参 | 须在使用处指定的类型。使用标识符在体内引用 |
| 类型变元 | 在体内引用类型形参的标识符 |
| 类型实参 | 使用泛型声明时提供的具体类型 |
| 类型构造器 | 接受零个或多个类型作为参数以产生具体类型的类型 |
<...> 声明class List<T> — T 是类型参数;List<Int64> — Int64 是类型实参;List 是类型构造器<> 中声明一个或多个类型参数func id<T>(a: T): T { return a }
class、struct、enum 可有泛型成员函数where 指定:class A {
func foo<T>(a: T): Unit where T <: ToString { println("${a}") }
}
interface、class、struct、enum、extend 可定义静态泛型函数open class Node<K, V> where K <: Hashable & Equatable<K> {
var key: Option<K> = Option<K>.None
var value: Option<V> = Option<V>.None
}
public interface Iterable<E> {
func iterator(): Iterator<E>
}
struct Pair<T, U> {
let x: T
let y: U
public init(a: T, b: U) { x = a; y = b }
}
Option<T>:public enum Option<T> {
Some(T)
| None
}
where 关键字,放在声明体之前where T1 <: Interface, T2 <: Class&:where T1 <: Interface1 & Interface2func genericPrint<T>(a: T) where T <: ToString {
println(a)
}
class Zoo<T> where T <: Animal { ... }
class C<Z> <: I<Z, Z>,则 C<Bool> <: I<Bool, Bool>、C<D> <: I<D, D> 等| 型变 | 条件 |
|---|---|
| 不变 | T(A) <: T(B) ⟺ A = B |
| 协变 | T(A) <: T(B) ⟺ A <: B |
| 逆变 | T(A) <: T(B) ⟺ B <: A |
typetype Alias = OriginalTypevar a: A = B() 其中 type A = BA() 构造 BA.foo()、A.bTime.Day 其中 type Time = TimeUnitwhere 约束type RD<T> = RecordData<T>
| 特性 | function | class | interface | struct | enum |
|---|---|---|---|---|---|
| 类型参数 | ✅ | ✅ | ✅ | ✅ | ✅ |
where 约束 | ✅ | ✅ | ✅ | ✅ | ✅ |
| 泛型成员函数 | — | ✅ | ✅ | ✅ | ✅ |
| 静态泛型函数 | — | ✅ | ✅ | ✅ | ✅ |
| 扩展中的泛型 | ✅ | — | — | — | — |
| 类型别名 | — | ✅ | — | ✅ | ✅ |
| 子类型型变 | — | 不变 | 不变 | 不变 | 不变 |