数组


在 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" 关联数组和使用散列

"Scripting.Dictionary" 是一个比 AutoHotkey 的伪数组拥有更多功能更灵活的操作系统特性。它的使用详见 www.autohotkey.com/forum/topic17838.html

翻译:单菜子   修正:天堂之门 menk33@163.com 2009年1月21日