建立和初始化簡單陣列
介紹
一個陣列是保持多個值的容器物件。在下圖中,你可以看到大小為 10 的陣列,第一個元素索引為 1,最後一個元素為 10。
http://i.stack.imgur.com/qqDyL.gif
Autohotkey 提供了一些定義和建立陣列的方法。
- 陣列:= []
- 陣列:=陣列()
使用 N 個項建立和初始化陣列
Array := [Item1, Item2, ..., ItemN]
Array := Array(Item1, Item2, ..., ItemN)
在 Autohotkey 中,可以使陣列沒有專案:
Array := [] ; works fine.
然後可以將元素分配給它:
Array[0] := 1
可以使用名為 length
的方法確定陣列大小:
msgbox % array.length() ; shows 1 in this case.
如果陣列不為空,則 MinIndex 和 MaxIndex / Length 返回陣列中當前使用的最低和最高索引。由於最低索引幾乎總是 1,因此 MaxIndex 通常返回專案數。但是,如果沒有整數鍵,則 MaxIndex 返回空字串,而 Length 返回 0。
建立和初始化多維陣列
你可以建立一個多維陣列,如下所示:
Array[1, 2] := 3
你可以在同一時間建立和初始化,並且內部陣列不需要具有相同的長度。
Array := [[4,5,6],7,8]
像這樣的陣列也稱為陣列陣列。
填充陣列
; Assign an item:
Array[Index] := Value
; Insert one or more items at a given index:
Array.InsertAt(Index, Value, Value2, ...)
; Append one or more items:
Array.Push(Value, Value2, ...)
陣列元素的索引值也可以是負整數(-1,0,1,2,3,4 ……)
從陣列中刪除元素
; Remove an item:
RemovedValue := Array.RemoveAt(Index)
; Remove the last item:
RemovedValue := Array.Pop()
通過重寫 Array()
函式新增自定義方法
AutoHotkey 是一種基於原型的程式語言 ,這意味著你可以隨時覆蓋任何內建函式/物件。此示例演示了重寫 Array()
函式,以便在自定義類物件中新增方法。
; Overrides Array()
Array(Args*) {
Args.Base := _Array
Return Args
}
; Custom Class Object with Methods
Class _Array {
; Reverses the order of the array.
Reverse() {
Reversed := []
Loop % This.MaxIndex()
Reversed.Push(This.Pop())
Return Reversed
}
; Sums all Integers in Array
Sum(Sum=0) {
For Each, Value In This
Sum += Value Is Integer ? Value : 0
Return Sum
}
}
; Arr == ["Hello, World!", 4, 3, 2, 1]
Arr := [1, 2, 3, 4, "Hello, World!"].Reverse()
; SumOfArray == 10
SumOfArray := Arr.Sum()