用 AutoHotkey 做一个文件查找工具之二:数组的使用

来源:互联网 发布:大华收银秤软件 编辑:程序博客网 时间:2024/06/11 13:51

http://www.cnblogs.com/yonken/archive/2010/05/10/Smart_Open_Files_Using_Array_in_AutoHotkey.html 《新版ahk已经支持真正数组,本文过时了》

在前一篇中测试证明确实可以在AHK中实现虚拟列表后,接下来要做的就是考虑存储显示内容的问题了。

由于虚拟列表要求我们自行实现显示内容的存储,也就是说需要存储一组结构类似的变量,那就必然要使用数组。数组的一个例子是:

nArrayCount := 3
 
loop, %nArrayCount%
{
    arr%A_Index%_Name := "Killer" A_Index
}
 
loop, %nArrayCount%
{
    MsgBox % arr%A_Index%_Name
}

 

可以看到,AHK中的数组实际上就是动态构造的一组名字有一定规律(通常和序号有关)的变量罢了。

 

那么如果想要把这样的代码抽出来作为一个函数能实现吗?

恐怕只有一个比较怪的方法来实现:通过传递数组名(字符串)到函数中解释构造到全局作用域(通过global控制),当然这样的函数必然会破坏函数的独立性(实际上就是在函数中构造/访问全局变量),但暂时找不到别的方法了,下面是个例子:

 

nArrayCount := 3
 
InitArray("myArr1","DumbAss", nArrayCount)
InitArray("myArr2","Fool", nArrayCount)
 
loop, %nArrayCount%
{
    strMsg .= myArr1%A_Index%_Name A_Tab
    strMsg .= myArr2%A_Index%_Name "`n"
}
MsgBox %strMsg%
ExitApp
 
InitArray(arrNamePrefix, strPlayerName, nArrayCount)
{
    global  ; 这就是在函数中“构造数组”的重点
    loop, %nArrayCount%
    {
        %arrNamePrefix%%A_Index%_Name := strPlayerName A_Index
    }
}

0 0