到现在为止,我们已经能够在计算中代入多种数据了。
立即值(就是数据表示的就是本身的意思,例如数字、字符串、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)类型的变量。
或者像第二种写法那样,用其他变量的类型名代入。