在 AutoHotkey 中,数组主要是概念上的:每个数组实际上只是一系列连续编号的变量或函数,它们每一个都被视为数组中的一个元素。AutoHotkey 不会将这些元素连接在一起。
除了像 StringSplit 和 "WinGet List" 这种数组创建命令外,任何能接受 OutputVar 参数或者可以为变量赋值的命令都可以被用来创建一个数组。最简单的例子是赋值运算符 (:=),如下所示:
Array%j% := A_LoopField
通过在 indices (索引)之间使用一个你任选的分隔符,可以创建多维数组。例如:
Array%j%_%k% := A_LoopReadLine
下面的例子演示了如何创建并访问一个数组,在这里,是从一个文本文件获取一系列的名称:
;写入数组: ArrayCount = 0 Loop, Read, C:\Guest List.txt ;此循环从文件中逐行获取内容。 { ArrayCount += 1 ;记录在数组中有多少个项目。 Array%ArrayCount% := A_LoopReadLine ;将此行内容存入下一个数组元素中。 } ;从数组读取: Loop %ArrayCount% { ;下面这行使用了 := 运算符来获取一个数组元素: element := Array%A_Index% ; A_Index 是一个内置变量。 ;或者,你可以使用 "% " 前缀,从而让 MsgBox 或其他一些命令支持表达式: MsgBox % "元素编号 " . A_Index . " 是 " . Array%A_Index% }
数组也可以储存函数名称,以便之后对其动态调用。
一个和数组相关的概念是使用 NumPut() 和 NumGet() 来储存/获取一批二进制格式的数字。在对性能和/或内存占用有要求时,会比较有用。
"Scripting.Dictionary" 是一个比 AutoHotkey 的伪数组拥有更多功能更灵活的操作系统特性。它的使用详见 www.autohotkey.com/forum/topic17838.html。
翻译:单菜子 修正:天堂之门 menk33@163.com 2009年1月21日