跳转至

变量

在 Riddle 中,一个变量可以有三种定义方法,分别是

  • 可变 : var
  • 不可变 : val
  • 常量 : const val

可变量 (Variable)

可变量指一个标识符所对应的值可以在运行期间多次更改。

你可以通过以下方法来定义一个可变量

  • var <name> = <value>
  • var <name> : <typename>
  • var <name> : <typename> = <value>

和大部分语言一样,同一个作用域中只能定义一次某个标识符所表示的变量

var a = 1
var a = 2 // 报错:你在一个作用域中多次定义该标识符

由于 Riddle 是强类型语言,所以你不能改变一个已经被定义的变量的类型

var a = 1
a = "123" // 报错:你将一个字符串表面量赋值到了 int 类型的变量 a 中

变量在不同作用域中可以多次定义,变量在生命周期结束时会调用析构函数。你可以通过引用来获取这个变量的实际地址,但是在作用域外使用该地址是未定义行为

不可变量 (ValueVar)

不可变量是变量的一个变种,本质上还是一个变量并且也拥有相应的内存地址。

通过编译器约束不可变量的赋值行为,使其成为不可变。

常量 (Constant)

常量是一个完全不可变的量,在编译期确定,没有相应的内存地址。

它与不可变量的最大的区别就是常量的值在编译器确定,由编译器优化后速度更快。