变量与绑定
程序通过声明把名字与值绑定。绑定声明有三种:const、val、var。
const MaxRetries = 3;
val limit = MaxRetries * 2;
var attempts = 0;
attempts = attempts + 1;
print(MaxRetries, limit, attempts);3 6 1const声明编译期常量(Constant):值必须在编译期就能算出来,声明后不可重新赋值。程序里写死的上限、阈值、配置数字,可以用它。val声明不可变绑定(Value):limit绑定为 6,之后不可再变。var声明可变变量(Variable):attempts从 0 变成了 1。
const 和 val 一样,拒绝重新赋值:
MaxRetries = 4; // ✗ const 声明的名字不能重新赋值var 还有其他两种绑定没有的特性:先声明、后赋值(此时类型要写出来):
var counter: int;
counter = 0;
counter += 10;
print(counter);10Note
能用 val 就用 val,真正「写死不变」的常数升级成 const,var 留给确实会变化的量。
const 的编译期求值
const 的初值在编译期求值并折叠:字面量算术(6 * 7)、其他 const 的引用,以及标准库 Math 白名单函数都可以出现在 const 位,产物直接进编译产物:
const ConstFolded: int = Math.Clamp(80 * 2, 0, 100);
print(ConstFolded);100const 位能写什么有明确边界,需要更复杂的编译期计算时用常量方法(见常量方法)。
解构声明
val / var 还支持解构形态:左边放模式,一次声明多个名字。向量与元组都能拆:
val (x, y) = vec2i(3, 4);
print(x, y);3 4解构只是声明位的语法,拆法属于模式系统,全集见模式一页。
注意
- 三种绑定的名字都遵循标识符规则,大小写敏感。
const的初值在编译期求值,能写的东西有限,详见常量方法。- 绑定的类型通常自动推断,推断不出时需要把类型写在冒号后面(如上面的
counter: int)。
最后更新于 2026年10月7日
