Skip to content

CN:第二章:常量与变量

PowerAngel edited this page Oct 22, 2022 · 1 revision

返回到目录

在这个章节中,您将知悉 Yolang 中变量,常量的声明方式和使用方式

变量

一般地,在 Yolang 中,变量或常量有如下声明(可能会一并初始化)方式:

如果要声明常量,将语句中的var替换成const即可

var c: string;
var b = "world";
var a: string = "hello";

三种声明方式

第一行,是不对变量进行初始化,但是指明了变量的类型,这时 yovm 会对该标识符赋以该类型的初始值进行初始化工作

第二行,对变量进行了初始化,但是不指明变量的类型,这时 yovm 会对等号右边的值(rvalue,即右值)进行自动类型推导,推导出这个标识符应该获得的类型并初始化

第三行,对变量进行了初始化并指明变量类型,这种方法是最为清楚地让人知道您在干什么(当然前两种写法也十分的简便,只是在可读性上可能没有这种好)

注意

  1. 如果您使用了第三种的方法声明,那么您的右值类型必须跟您规定的类型一样,否则 Yolang 在解析这行语句的时候会产生报错
  2. 如果您声明了一个已经存在的变量,在运行的时候 yovm 也会对其报错(重复的标识符是不被允许的)

我们现在来看另一种初始化方式,它属于第一种,但是无意义:

var n;

这行语句会运行,但是是无意义的,首先他初始化的是一个默认为null类型的变量;

并且在 Yolang 中,默认的不加修饰符的变量声明默认的类型是static,在此模式下,进行赋值操作时的右值不能与声明时的类型不一致,否则会报错(这一点我们将在第三章进行详细讲解);

进而因为这个机制,这个变量的类型将一直是null类型,您给这个变量赋任何类型的值(除了null,但null类型的值表达方式只有一个便是null本身)都将报错

变量的操作

对于变量来讲,变量的值是可以进行改变的,如下

var test: string = "hello world";
test = "this is a test";

只需要使用赋值运算符:=即可进行赋值操作,但是要注意我们上面提到过的static问题

而在 Yolang 中,变量也是可以从当前作用域清除出去的(有关作用域我们将在第四章进行讲解);

写法如下:

var will_be_deleted = "help!!!!";
delete will_be_deleted;

可以看出,这个变量已经在尽力求救了,但是还是逃不过被删除的事实(;´д`)

上面的例子可以看出,这一操作是不可逆的,当然你删除的是已经存在的标识符,如果是不存在的标识符,yovm 会在运行的时候给你报错的\\( ̄︶ ̄*\\))

常量

常量,顾名思义,长(chang)久不变的量(大雾),所以对于常量来讲,下面的操作是非法的

const a: integer = 12;
a = 45; 

因为常量的值不能被改变

除此之外,常量也不能被dynamicstatic修饰符修饰,例如下面的例子,Yolang 在开始解析的时候会报错:

dynamic const b: integer = 927;
static const c: string = "im";

具体原因我们将在第三章进行详细讲解 尽管常量不能被重新赋值,但是依然是可以被删除的,例如下面的例子:

const s: string = "hello world!";
delete s;

上面的代码是可以正常运行的,执行过后,标识符s将跟他所绑定的值一起不复存在