创建和初始化简单数组
介绍
一个阵列是保持多个值的容器对象。在下图中,你可以看到大小为 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()