AutoHotkey
Массивы
Поиск…
Создание и инициализация простых массивов
вступление
Массив - это контейнерный объект, который содержит несколько значений. На следующем изображении вы можете увидеть массив размером 10, первым элементом, индексированным 1, и последним элементом 10.
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()