ワンクリックで
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 约束 | ✅ | ✅ | ✅ | ✅ | ✅ |
| 泛型成员函数 | — | ✅ | ✅ | ✅ | ✅ |
| 静态泛型函数 | — | ✅ | ✅ | ✅ | ✅ |
| 扩展中的泛型 | ✅ | — | — | — | — |
| 类型别名 | — | ✅ | — | ✅ | ✅ |
| 子类型型变 | — | 不变 | 不变 | 不变 | 不变 |