Skip to Content

变量与绑定

程序通过声明把名字与值绑定。绑定声明有三种:const、val、var。

const MaxRetries = 3; val limit = MaxRetries * 2; var attempts = 0; attempts = attempts + 1; print(MaxRetries, limit, attempts);
3 6 1
  • const 声明编译期常量(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);
10
Note

能用 val 就用 val,真正「写死不变」的常数升级成 const,var 留给确实会变化的量。

const 的编译期求值

const 的初值在编译期求值并折叠:字面量算术(6 * 7)、其他 const 的引用,以及标准库 Math 白名单函数都可以出现在 const 位,产物直接进编译产物:

const ConstFolded: int = Math.Clamp(80 * 2, 0, 100); print(ConstFolded);
100

const 位能写什么有明确边界,需要更复杂的编译期计算时用常量方法(见常量方法)。

解构声明

val / var 还支持解构形态:左边放模式,一次声明多个名字。向量与元组都能拆:

val (x, y) = vec2i(3, 4); print(x, y);
3 4

解构只是声明位的语法,拆法属于模式系统,全集见模式一页。

注意

  • 三种绑定的名字都遵循标识符规则,大小写敏感。
  • const 的初值在编译期求值,能写的东西有限,详见常量方法。
  • 绑定的类型通常自动推断,推断不出时需要把类型写在冒号后面(如上面的 counter: int)。
最后更新于 2026年10月7日