pgArray [v2.1]

作者: Infogulch 最近更新时间: nonexistent


There have been requests for real arrays in ahk for a long time, and people have come up with several not to shabby solutions by putting the array in one var. (e.g. AHKA, SimpleArray) But for several (good) reasons, some don't want to use those, and instead choose to use AHK's psuedo arrays.

Psuedo arrays are OK, but they're limited. There are some things that psuedo-arrays just can't do, like passing an array as a func param. Other things are just a big pain and give people headaches, like inserting or removing an element in an array. (not overwriting and clearing) What I present here is a way to alleviate these headaches.

pgArray_Insert( ArrayName, Idx, p1, p2="", p3="", p4="", p5="" )
pgArray_Rotate( ArrayName, FromIdx, ToIdx )
pgArray_Shift( ArrayName, Idx=1, HowFar=1 )
pgArray_Swap( ByRef Var1, ByRef Var2 )

关于函数的参数和返回值, 请参阅其源码或 此文档.

备注

The documentation is copied part from author`s forum post about the library.

This library works extensively with global variables only, as it is exactly designed for. Thats why it is not strictly stdlib conform.

关于此函数(集)的更新细节和注意事项, 请参见 AutoHotkey 论坛: http://www.autohotkey.com/forum/viewtopic.php?t=36072

许可

此函数(集)是基于 infogulch`s license 许可的开源项目. 想了解许可详情, 请参见 infogulch-license.txt

示例

; #Include pgArray.ahk
#NoEnv
SendMode Input
SetWorkingDir %A_ScriptDir%

; Note that there are some more examples at the bottom of the code above
#SingleInstance, Force
GoSub SetVars

;inserting to a specific index:
   pgArray_Insert("Array", 3, "Inserted starting @ 3", "another string"), Display("Inserting:")

;removing an element:
   pgArray_Shift("Array", 3), Display("Removing #3:")

;shifting 5 to 2
   pgArray_Rotate( "Array", 5, 2), Display("Rotated 5 to 2:")

;popping the last element:
   pgArray_Shift( "Array", -1 ), Display("popped the last element:")

;inserting several elements at the end:
   pgArray_Insert("Array", 0, "Added to end", "added more"), Display("added to end")
return

SetVars:
   Array0=7
   Array1=one
   Array2=two
   Array3=three
   Array4=four
   Array5=five
   Array6=six
   Array7=seven
Return

Display(x)
{ ;demonstration script specific - Infogulch
   local Info
   Info := x "`n"
   Loop % Array0
      Info .= A_Index ":`t" Array%A_Index% "`n"
   MsgBox % Info
   GoSub SetVars ;reset the vars for the next function
}