원클릭으로
cangjie-const
仓颉语言 const 变量与 const 函数。当需要了解仓颉语言的 const 变量定义、const 表达式、const 函数、编译时求值、const init 构造函数等特性时,应使用此 Skill。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
仓颉语言 const 变量与 const 函数。当需要了解仓颉语言的 const 变量定义、const 表达式、const 函数、编译时求值、const init 构造函数等特性时,应使用此 Skill。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
通用算法与数据结构实现参考——排序、搜索、动态规划、图算法、字符串处理的多语言惯用写法和模板代码(Python/C++/Java/Go/Cangjie)
仓颉语言算法与数据结构实现参考——排序、搜索、动态规划、图算法、字符串处理、集合操作的惯用写法和模板代码
仓颉编程语言基本概念和规则,当需要了解关键字、标识符、程序结构、变量定义(let/var/const)、值类型与引用类型、作用域规则、表达式(if/while/for-in/break/continue)、函数等基本概念时,应使用此 Skill
仓颉语言基本数据类型。当需要了解仓颉语言的整数、浮点、布尔、字符(Rune)、字符串(String)、Unit、Nothing、元组(Tuple)、数组(Array/VArray)、区间(Range)类型以及基本运算符的语法和规则时,应使用此 Skill。
仓颉程序与C程序互操作指导,包括foreign声明、CFunc、inout参数、unsafe块、调用约定、类型映射(基础类型/结构体/CPointer/VArray/CString)、C回调仓颉、内存管理等特性时,应使用此 Skill
仓颉语言类。当需要了解仓颉语言的类定义、抽象类、构造函数(init/主构造函数)、终结器(~init)、继承(单继承/sealed)、重写(override)、重定义(redef)、成员变量、成员函数、属性(prop)、访问修饰符、This类型、对象创建等特性时,应使用此 Skill。
SOC 직업 분류 기준
| name | cangjie-const |
| description | 仓颉语言 const 变量与 const 函数。当需要了解仓颉语言的 const 变量定义、const 表达式、const 函数、编译时求值、const init 构造函数等特性时,应使用此 Skill。 |
const G = 6.674e-11
const 修饰符声明,表示编译时常量,深度不可变let:不可变,只能赋值一次,运行时绑定var:可变,可多次赋值const:编译时常量,深度不可变,初始化表达式必须是 const 表达式可在编译时求值的表达式,包括:
Bool、Unit、Rune、String(不包含插值字符串)的字面量Array 字面量(不能是 Array 类型,可以使用 VArray 类型)和元组字面量const 变量、const 函数形参、const 函数中的局部变量const 函数,包含使用 const 声明的函数名、符合 const 函数要求的 lambda、以及这些函数返回的函数表达式const 函数调用(包含 const 构造函数),该函数的表达式必须是 const 表达式,所有实参必须都是 const 表达式enum 构造器调用,和无参数的 enum 构造器Bool、Unit、Rune、String 类型的算术表达式、关系表达式、位运算表达式,所有操作数都必须是 const 表达式if、match、try、throw、return、is、as — 这些表达式内的表达式必须都是 const 表达式const init 和 const 函数中的 this 和 super 表达式const 表达式的 const 实例成员函数调用,且所有实参必须都是 const 表达式const func distance(a: Point, b: Point) {
let dx = a.x - b.x
let dy = a.y - b.y
(dx ** 2 + dy ** 2) ** 0.5
}
const 修饰符声明const 上下文中 → 编译时求值;在非 const 上下文中 → 运行时求值const 函数声明必须使用 const 修饰const 函数和 static const 函数中只能访问 const 声明的外部变量(包含 const 全局变量、const 静态成员变量)。const init 函数和 const 实例成员函数除了能访问 const 声明的外部变量,还可以访问当前类型的实例成员变量const 函数中的表达式都必须是 const 表达式(const init 函数除外)const 函数中可以使用 let、const 声明新的局部变量,但不支持 varconst 函数中的参数类型和返回类型没有特殊规定。如果该函数调用的实参不符合 const 表达式要求,那这个函数调用不能作为 const 表达式使用,但仍然可以作为普通表达式使用const 函数不一定都会在编译时执行,例如可以在非 const 函数中运行时调用const 函数与非 const 函数重载规则一致Bool、Unit、Rune、String 类型和 enum 支持定义 const 实例成员函数struct 和 class,只有定义了 const init 才能定义 const 实例成员函数。class 中的 const 实例成员函数不能是 open 的。struct 中的 const 实例成员函数不能是 mut 的const 函数,实现类型必须也用 const 函数才算实现接口const 函数,实现类型使用 const 或非 const 函数都算实现接口const 函数与接口的 static 函数一样,只有在该接口作为泛型约束的时候,受约束的泛型变元或变量才能使用这些 const 函数interface I {
const func f(): Int64
const static func f2(): Int64
}
class A <: I {
public const func f() { 0 }
public const static func f2() { 1 }
const init() {}
}
const func g<T>(i: T) where T <: I {
return i.f() + T.f2()
}
如果一个 struct 或 class 定义了 const 构造器,那么这个 struct/class 实例可以用在 const 表达式中。
struct Point {
const Point(let x: Float64, let y: Float64) {}
}
var 声明的实例成员变量;如果当前类型具有父类,当前的 const init 必须调用父类的 const init(可以显式调用或者隐式调用无参 const init),如果父类没有 const init 则报错const initconst init 内可以使用赋值表达式 = 对实例成员变量赋值,除此以外不能有其他赋值表达式(如 +=、-=)const init 与 const 函数的区别是 const init 内允许对实例成员变量进行赋值(需要使用赋值表达式)struct Point {
const Point(let x: Float64, let y: Float64) {}
}
const func distance(a: Point, b: Point) {
let dx = a.x - b.x
let dy = a.y - b.y
(dx ** 2 + dy ** 2) ** 0.5
}
main() {
const a = Point(3.0, 0.0)
const b = Point(0.0, 4.0)
const d = distance(a, b)
println(d) // 输出 5.000000
}