首页 果壳精灵教程 当前文章

【新手入门】第 7 讲:变量和常量

xLeaves(xxrpa) 发布于 2022年05月27日 20:00:21


到现在为止,我们已经能够在计算中代入多种数据了。

立即值(就是数据表示的就是本身的意思,例如数字、字符串、true 和 false 等),例如这段代码里的 "Hello World" 就是立即值:

Function Main() As Long
    MsgBox("Hello World")
End Function

函数也可以代入数据,例如 InputBox 命令,就会返回用户输入的数据,那么函数代码最终得到的结果就是一个字符串:

Function Main() As Long
    MsgBox(InputBox("Hello World"))
End Function

数据与运算符构成表达式,最终也是可以代入为一个数据的,例如这段代码里的 1000 + 1000:

Function Main() As Long
    TracePrint("Hello World")
    Delay(1000 + 1000)
    TracePrint("Hello World")
End Function

当然,还有一些特殊的符号,也是可以代入数据进行计算的,例如圆周率π,在果壳精灵中,使用 M_Pi 表示圆周率:

Function Main() As Long
    TracePrint(M_Pi)
End Function

这里的 M_Pi 就是一个常量。类似的常量还有 M_e,代入值为 e 数,输出看看是多少吧!


常量:

常量就是起一个名字,任何情况下,都可以用一个通俗易懂的名字来代替一个数据,并且数据无法在运行的过程中修改。

定义一个常量的写法如下:

Const 常量名 As 数据类型 = 常量值

常量名可以是符合要求的任意名称,要求必须以字母、汉字或下划线开头,可以由字母、汉字、数字、下划线组成的符号。

数据类型就是第五讲里面提出的那些数据类型表示符号,例如字符串就是 String,逻辑值是 Boolean,整数是 Long……

常量值就是这个符号能够代入的数据,要与数据类型匹配,例如 Long 类型的常量不能设置为一个字符串。

下面是常量的使用方法定义:

Function Main() As Long
	Const 你好 As String = "你好呀,世界!"
	TracePrint(你好)
End Function

当你的代码写的越来越多时,程序经常要用不同的数值表示不同的状态,如果直接写数值的话,时间一长,自己再看这段代码的时候都记不得这个数字是什么意思了。

这就是编程领域里著名的“魔法数字”,我们在写程序时应该尽量避免魔法数字的出现,用意义明确的常量名来代替数据是个很不错的选择。


变量:

常量是定义一个能够代入特性数据的名字,但是这个数据定义后就不能改变了,有时候我们会保存运行的状态。

举个例子,MsgBox 命令是有返回值的,你可以指定它的按钮组,例如【是】 + 【否】两个按钮,用户点击了某个按钮之后,MsgBox就会把这个按钮的ID返回回来。

之后的代码你需要多次判断这个按钮的值是多少,总不能每次判断值的时候,都重新弹出一个 MsgBox,并且要求用户必须每次都点击相同的按钮吧?

这时候就轮到变量登场了!

变量和常量看起来很像,但区别在于,变量的数据,是可以随意改变的,想换什么就换什么。

定义一个变量的写法如下:

Dim 变量名 As 数据类型
Dim 变量名 As 数据类型 = 变量值

只是将 Const 变成了 Dim,因为变量的值是可以改变的,我们没必要在定义的时候就给他一个数据,因此变量值可以设置,也可以不设置。

当变量名不设置的时候,变量会有一个初始值,例如对于数字来说,它的初始值就是 0,对于字符串来说,它的初始值就是 ""(空的字符串)。

学会使用变量之后,我们就能够实现一些之前难以实现的功能了,例如加法计算器:

Function Main() As Long
	Dim v1 As Long
	Dim v2 As Long
	v2 = CLng(InputBox("请输入一个整数数字:"))
	v1 = v1 + v2
	v2 = CLng(InputBox("请输入一个整数数字:"))
	v1 = v1 + v2
	v2 = CLng(InputBox("请输入一个整数数字:"))
	v1 = v1 + v2
	TracePrint v1
End Function

我用这个加法计算器,计算出了 123 + 456 + 789 的值,结果为:



我们可以在【标准库】 - 【数据操作】分类下找到 CLng 命令,这个命令的功能是将一个字符串转换为一个数字。

需要注意的是,InputBox 的返回值类型是字符串,就算你输入了 123,它的返回值也是 "123" 而不是 123,这两个数据是有区别的。

因此我们需要使用 CLng 将 "123" 转换为 123。

否则 "123" + 456 得到的结果将是 "123456",而不是 579!


定义变量的时候,还可以动态指定变量的类型:

Dim 变量名 Like "数据类型名"
Dim 变量名 like TypeOf(其他变量名)

通过 Like 语句指定类型名的时候,后面的类型名是字符串,因此可以拼接出一个类型名出来,例如:

Dim 变量名 Like "S" & "t" & "ring"

这样就定义了一个字符串(String)类型的变量。

或者像第二种写法那样,用其他变量的类型名代入。


若无特殊声明,上述内容为本站原创,未经授权禁止转载!