-
Notifications
You must be signed in to change notification settings - Fork 2
CN:第二章:常量与变量
在这个章节中,您将知悉 Yolang 中变量,常量的声明方式和使用方式
一般地,在 Yolang 中,变量或常量有如下声明(可能会一并初始化)方式:
如果要声明常量,将语句中的
var
替换成const
即可
var c: string;
var b = "world";
var a: string = "hello";
第一行,是不对变量进行初始化,但是指明了变量的类型,这时 yovm 会对该标识符赋以该类型的初始值进行初始化工作
第二行,对变量进行了初始化,但是不指明变量的类型,这时 yovm 会对等号右边的值(rvalue,即右值)进行自动类型推导,推导出这个标识符应该获得的类型并初始化
第三行,对变量进行了初始化并指明变量类型,这种方法是最为清楚地让人知道您在干什么(当然前两种写法也十分的简便,只是在可读性上可能没有这种好)
注意
- 如果您使用了第三种的方法声明,那么您的右值类型必须跟您规定的类型一样,否则 Yolang 在解析这行语句的时候会产生报错
- 如果您声明了一个已经存在的变量,在运行的时候 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;
因为常量的值不能被改变
除此之外,常量也不能被dynamic
,static
修饰符修饰,例如下面的例子,Yolang 在开始解析的时候会报错:
dynamic const b: integer = 927;
static const c: string = "im";
具体原因我们将在第三章进行详细讲解 尽管常量不能被重新赋值,但是依然是可以被删除的,例如下面的例子:
const s: string = "hello world!";
delete s;
上面的代码是可以正常运行的,执行过后,标识符s
将跟他所绑定的值一起不复存在