# 数组

在 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日