计算机从被研发出来的第一天起,就是为了处理数据的,计算各种数据是它的强项,为了更好的计算数据,我们经常需要将数据抽象成我们能够理解的形态。
如果13亿人的各种数据集全都拥挤的放在一起,我们很难从中筛选出对我们有用的信息,因此,将数据巧妙的存储为便于理解的数据结构,就是让我们实现各种目标的一大利器。
自定义一个数据结构,这种数据结构,被称为【结构体】。
定义一个结构体,我们可以使用【Type】语句:
Type 数据类型名字 整数 As Long 小数 As Double 文字 As String End Type
定义一个结构体,总是从 Type 开始的,后面跟着你希望这个结构体数据类型叫什么名字,有了这个名字,我们就可以定义这种结构化数据的变量了。
然后在结构体中,我们可以定义若干个变量,在这里定义变量不再需要 Dim 语句了,直接 【变量名 As 数据类型】 即可,结构体内可以定义任何类型的变量,甚至再包含一个结构体。
例如我们希望定义一个坐标类型的数据,可以这样:
Type 坐标 x As Long y As Long End Type
然后我们可以定义一个【坐标】类型的变量:
Type 坐标 x As Long y As Long End Type Function Main() As Long Dim a As 坐标 a.x = 123 a.y = 456 TracePrint "坐标为:" & a.x & ", " & a.y End Function
非常简单吧!现在让我们定义一个人体的数据,并填充它:
Type 坐标 经度 As Double 纬度 As Double End Type Type 人 姓名 As String 性别 As Boolean 身高 As Long 体重 As Long 身份证号 As String 跟踪位置 As 坐标 End Type Function Main() As Long Dim sx As 人 sx.姓名 = "小船" sx.性别 = false ' 定义男为 true,女为 false sx.身高 = 149 ' 单位为 cm sx.体重 = 200 ' 单位为 KG sx.身份证号 = "123456190001010123" sx.跟踪位置.经度 = 0.123 sx.跟踪位置.纬度 = 0.456 End Function
这样我们就能设置和读取一个与人相关的一系列数据了,是不是非常简单呢?
很多场合我们都能把数据整理归纳为这样的数据结构,对数据结构直接进行操作会让代码更加清晰。
结构体也是可以有函数的,这种函数一般被称为【成员函数】。
就好比一个人,除了有身高、体重、性别等数据,还可以进行各种操作,例如:重拳出击、碾碎他们、进入钢琴大师模式等……
定义成员函数的方法很简单,只需要在【Type】和【End Type】之间写函数代码就可以了:
Type 坐标 经度 As Double 纬度 As Double End Type Type 人 姓名 As String 性别 As Boolean 身高 As Long 体重 As Long 身份证号 As String 跟踪位置 As 坐标 Function 初始化数据(ByVal sName As String) As Long Me.姓名 = sName Me.性别 = false ' 定义男为 true,女为 false Me.身高 = 149 ' 单位为 cm Me.体重 = 200 ' 单位为 KG Me.身份证号 = "123456190001010123" Me.跟踪位置.经度 = 0.123 Me.跟踪位置.纬度 = 0.456 End Function End Type Function Main() As Long Dim sx As 人 sx.初始化数据("小船") TracePrint sx.姓名 TracePrint sx.身份证号 End Function
成员函数和普通的函数差不多,但只能通过结构体对象来调用,在成员函数内,可以使用 Me 关键字访问结构体的变量和其他成员函数。