变量(Variable)是用来保存一个数据的,数组(Array)是用来保存一系列数据的。比如,我们可以把一个班里所有人的名字保存到一个数组之中。事实上,你可以把数组理解为“最简单形式的数据库”,或者“只有一列数据的表单”。
Dim $name[5] $name[0] = "Tom" $name[1] = "Jerry" $name[2] = "Mike" $name[3] = "Joey" $name[4] = "Jane"
注意,方括号内的“下标”,是zero-based,即,从零开始。所以,在第1行代码中我们定义了一个总计有5个元素的数组,名称是$name,第一个元素用$name[0]表示,最后一个元素用$name[4]表示。数组中的每一个元素,相当于一个变量,可以保存一个数据。
用一个循环语句,就可以遍历(逐一访问,或读,或存)所有元素:
For $i = 0 To 4 MsgBox(0, $i, $name[$i], 1) Next
数组的操作向来很麻烦。不过,幸运的是,AutoIt安装的过程中提供了很多UDF,即所谓的“用户自定义函数库”。UDF,是User Defined Function的首字母缩写。AutoIt是免费开源的软件,所以有很多人参与了开发过程,同时写了许多各式各样的,能够完成特定功能的函数。一旦你需要使用数组,最方便的方法就是直接调用一些UDF中的函数。
引用UDF函数库的方法是在程序开头添上这样一句:
#include <Array.au3>
之后,你就可以用_ArraySort()为某个数组排序,用_ArraySwap()为某两个元素调换位置,用_ArrayDisplay()显示一个数组内容,或者用_ArrayUnique()查询某个元素的值在整个数组中是否是唯一的……
UDF中关于数组管理的所有函数……
如果一个数组是“动态形成的”,或者,在程序运行过程中,数组增加或减少了一些元素,那么我们可以用UBound()函数得知某个特定数组的元素数量。
新建一个AutoIt文件,将其命名为Testing15.au3,输入以下代码,并按F5运行,查看结果:
#include <Array.au3> Dim $name[5] $name[0] = "Tom" $name[1] = "Jerry" $name[2] = "Mike" $name[3] = "Joey" $name[4] = "Jane" For $i = 0 To 4 MsgBox(0, $i, $name[$i], 1) Next _ArrayDisplay($name) _ArrayAdd($name, "Mary") _ArrayDisplay($name) MsgBox(0, "Info", "Now the array $name has " & UBound($name) & " elements...") _ArraySort($name) _ArrayDisplay($name) _ArrayReverse($name) _ArrayDisplay($name)
注意:当_ArrayDisplay()显示对话框的时候,程序会暂停,知道你按关闭按钮关闭该对话框之后,程序将继续运行。

作业:
把所有UDF中的关于数组管理的函数都拿出来调用、试验一遍。与此同时,还要“硬着头皮”精读每个函数的帮助文档……
提示:调用每个函数之后,都可以调用_ArrayDisplay()来查看数组的内容变化……



{ 2 comments… read them below or add one }
1)AutoIt使用数组时必须先声明数组的长度
2)其次,比如你声明了一个3个长度的数组,然后往这个数组里动态添加两个元素,但是你用UBound()函数返回的长度依然是3,就是你事先声明的长度。此处是个坑,小心导致莫名其妙的BUG
被逼无奈,想了这么一招,可以达到类似于动态数组的功能。
先声明一个长度为1的数组,然后再程序中使用_ArryAdd动态添加元素,最后,再用_ArryDelete($array,0)删除第一个空元素。我也是刚刚被逼想出来的。