Keyword Reference |
首页 后退 前进 |
Dim / Global / Local / Const 定义变量,常量,或创建数组.
Global | Local [Const] 变量 [ = 初始值 ] Global | Local [Const] 数组[下标 1]...[下标 n] [ = 初始值 ] 参数
备注 Dim/Local/Global 关键字执行类似功能: 1. 声明变量, 然后使用(类似 VBScript) 2. 创建数组
注意: 在 AutoIt 里面, 可以创建一个变量并赋值 ($myvar = 0), 但很多人喜欢明确的声明它们. 如果 AutoItSetOption("MustDeclareVars", 1) 被写入脚本, 则变量必须在使用前声明.
可以在一行中声明多个变量: Local $vVar_1, $vVar_2, $vVar_3
并初始化变量: Local $vVar_1 = 10, $vVar_2 = "20", $vVar_3 = 30
创建常量可以用类似的方法完成: Const $CONST_1 = 1, $CONST_2 = 2, $CONST_3 = 3 Global Const $PI = 3.14, $MEANING_OF_LIFE = 42 Local Const $iApples = 500
常量一旦创建后, 则不能修改常量的值, 也不能修改现有的变量为常量.
要初始化数组, 在方括号内指定元素值, 并用逗号分隔. 如果有多个维数, 可以再套用方括号进行赋值. 分配值的元素数量可以少于(但不能超过)声明的元素数量. 函数调用也可以放置初始化数组. 如果调用的函数返回一个数组, 则数组元素将包含返回的数组. Local $aArray_1[12] = [3, 7.5, "字符串"], $aArray_1[5] = [8, 4, 5, 9, 1] Local $aGrid[2][4] = [["保罗", "吉姆", "理查德", "路易斯"], [485.44, 160.68, 275.16, 320.00]] Global $aTest[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 值: $aArray = 0 这将释放数组, 并将其转换为值 0.
再次声明相同的(数组)变量名, 将删除所有数组值, 并重置大小为新的定义. 在同一作用域内以一个简单的值声明一个变量, 不会修改(同名)变量的(先前)值.
如果声明一个与参数同名的变量, 当函数内部使用 Local 用户函数时将出现错误. Global 在函数内部可用于分配全局变量, 但是如果全局变量与本地变量(或参数)同名, 则只能作为局部变量使用. 建议本地和全局变量使用不同的名称.
相关 AutoItSetOption, UBound, ReDim, Static 函数示例 示例 1 ; Example 1 - Declaring variables 示例 2 #AutoIt3Wrapper_Au3Check_Parameters=-q -d -w- 3 -w- 6 ; Already declared var=off, warn when using Dim=off ---------------------------------------- |