Поиск…


Создание и инициализация простых массивов

вступление

Массив - это контейнерный объект, который содержит несколько значений. На следующем изображении вы можете увидеть массив размером 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() 


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow