关 键 字 参 考


Dim / Global / Local / Const

定义变量,常量,或创建数组.

Dim [常量] 变量 [ = 初始值 ]
Dim [常量] 数组[索引 1]...[索引 n] [ = 初始值 ]

参 数

常量 [可选参数] 如果定义, 将创建常量而不是变量.
变量 变量或常量的名称(以 $ 符号开头).
初始值 分配给变量的初始值. 常量必须包括初始值. 初始值可以是一个函数调用.
索引 数组维数的元素数量, 索引为 0 到 n-1.

备 注

Dim/Local/Global 关键字执行类似功能:
1. 声明变量, 然后使用(类似 VBScript)
2. 创建数组

注意: 在 AutoIt 里面, 可以创建一个变量并赋值 ($myvar = 0), 但很多人喜欢明确的声明它们.
如果 AutoItSetOption("MustDeclareVars", 1) 被写入脚本, 则变量必须在使用前声明.

可以在一行中声明多个变量:

Dim $a, $b, $c


并初始化变量:

Dim $a = 2, $b = 10, $c = 20



创建常量可以用类似的方法完成:

Const $a = 2, $b = 10, $c = 20
Dim Const $d = 21, $e = Exp(1)
Local Const $f = 5, $g = 7, $h = -2


常量一旦创建后, 则不能修改常量的值, 也不能修改现有的变量为常量.



要初始化数组, 在方括号内指定元素值, 并用逗号分隔. 如果有多个维数, 可以再套用方括号进行赋值.
分配值的元素数量可以少于(但不能超过)声明的元素数量. 函数调用也可以放置初始化数组.
如果调用的函数返回一个数组, 则数组元素将包含返回的数组.

Dim $Array1[12]=[3, 7.5, "字符串"], $array[5] = [8, 4, 5, 9, 1]
Dim $Grid[2][4]=[["保罗", "吉姆", "理查德", "路易斯"], [485.44, 160.68, 275.16, 320.00]]
Dim $Test[5] = [3, 1, StringSplit("亚伯|杰克|博比|马蒂", "|"), Cos(0)]



Dim, Local 与 Global 三者的不同之处在于其声明变量的作用域:
Dim = 如果同名的全局变量不存在, 则作用域为局部 (此时会作为全局变量重复使用!)
Global = 强制创建的变量为全局作用域
Local = 强制创建的变量为局部作用域

应该更多的使用 Local 或 Global, 而不是 Dim, 使变量/常数/数组的作用域为理想的范围.

使用变量首先检查其局部作用域, 然后再检查其全局作用域.

创建数组时, 数组最大只能达 64 维, 和/或 1600 万个元素.

AutoIt 的一个独特的功能是能够复制这样的数组:
$mycopy = $myarray
$mycopy 将成为数组 $myarray 的精确副本, 并具有相同的尺寸, 不需要通过 Dim 语句声明它.
如果设置了 AutoItSetOption("MustDeclareVars", 1), 则变量 $mycopy 仍需首先声明, 但可以不指定大小.
如果变量 $mycopy 本身已经是数组或已被赋值, 则将删除原内容后再执行复制动作.

要删除数组(例如一个庞大全局数组, 需要释放其占用的内存), 只分配给它一个 0 值:
$array = 0
这将释放数组, 并将其转换为值 0.

再次声明相同的(数组)变量名, 将删除所有数组值, 并重置大小为新的定义.
在同一作用域内以一个简单的值声明一个变量, 不会修改(同名)变量的(先前)值.

如果声明一个与参数同名的变量, 当函数内部使用 Local 用户函数时将出现错误.
Global 在函数内部可用于分配全局变量, 但是如果全局变量与本地变量(或参数)同名,
则只能作为局部变量使用. 建议本地和全局变量使用不同的名称.

相 关 函 数

UBound, ReDim, Static, AutoItSetOption

函 数 示 例


Local $weeklyWorkSchedule
; 示例 1 - 声明变量
Local $x, $y = 23, $z
Global $_PI = 3.14159, $RADIUS
Local $_daysWorking = 5

; 示例 2 - 声明数组
Dim $weeklyWorkSchedule[$_daysWorking]
Global $chessBoard[8][8]
Local $mouseCoordinates[2], $windowStats[4]

; 示例 3 - 声明常(变)量
Const $x1 = 11, $y1 = 23, $z1 = 55
Global Const $PI = 3.14159, $E = 2.71828
Local Const $daysWorking = 5

provider with jb51.net (unicode)