Buscar..


Creando e inicializando arreglos simples

Introducción

Una matriz es un objeto contenedor que contiene una serie de valores. En la siguiente imagen puede ver una matriz con tamaño 10, el primer elemento indexado 1 y el último elemento 10.

introduzca la descripción de la imagen aquí

Autohotkey ofrece algunas formas de definir y crear matrices.

  • Array: = []
  • Array: = Array ()

Creación e inicialización de matrices con N número de elementos

Array := [Item1, Item2, ..., ItemN]
Array := Array(Item1, Item2, ..., ItemN)

En Autohotkey, es posible tener matrices sin elementos:

Array := [] ; works fine.

Y luego se le pueden asignar elementos:

Array[0] := 1

El tamaño de la matriz se puede determinar utilizando un método llamado length :

msgbox % array.length()  ; shows 1 in this case.

Si la matriz no está vacía, MinIndex y MaxIndex / Length devuelven el índice más bajo y más alto actualmente en uso en la matriz. Como el índice más bajo es casi siempre 1, MaxIndex generalmente devuelve el número de elementos. Sin embargo, si no hay claves enteras, MaxIndex devuelve una cadena vacía mientras que Length devuelve 0.

Creando e inicializando arrays multidimensionales.

Puede crear una matriz multidimensional de la siguiente manera:

Array[1, 2] := 3

Puede crear e inicializar al mismo tiempo, y las matrices internas no tienen que ser de la misma longitud.

Array := [[4,5,6],7,8]

Las matrices de este tipo también se denominan matrices de matrices.

Llenando una matriz

; 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, ...)

El valor de un índice para un elemento de matriz también puede ser un entero negativo (-1, 0, 1, 2, 3, 4, ...)

Eliminando elementos de una matriz

; Remove an item:
RemovedValue := Array.RemoveAt(Index)

; Remove the last item:
RemovedValue := Array.Pop()

Añadiendo métodos personalizados anulando la función Array ()

AutoHotkey es un lenguaje de programación basado en prototipos , lo que significa que puede anular cualquier función / objeto incorporado en cualquier momento. Este ejemplo demuestra la función Array () que prevalece para agregar métodos dentro de un objeto de clase personalizado.

; 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
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow