Sök…


Skapa och initiera enkla matriser

Intro

En matris är ett containerobjekt som innehåller ett antal värden. I följande bild kan du se en matris med storlek 10, det första elementet indexeras 1 och det sista elementet 10.

ange bildbeskrivning här

Autohotkey erbjuder några sätt att definiera och skapa matriser.

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

Skapa och initiera matriser med N-antal objekt

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

I Autohotkey är det möjligt att ha matriser utan föremål:

Array := [] ; works fine.

Och element kan sedan senare tilldelas det:

Array[0] := 1

Arraystorlek kan bestämmas med hjälp av en metod som kallas length :

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

Om matrisen inte är tom, returnerar MinIndex och MaxIndex / Length det lägsta och högsta indexet som för närvarande används i matrisen. Eftersom det lägsta indexet är nästan alltid 1 returnerar MaxIndex vanligtvis antalet objekt. Om det inte finns några heltalsknappar returnerar MaxIndex en tom sträng medan längd returnerar 0.

Skapa och initiera multidimensionella matriser

Du kan skapa en multidimensionell matris enligt följande:

Array[1, 2] := 3

Du kan skapa och initialisera samtidigt, och inre matriser behöver inte vara av samma längd.

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

Arrayer som detta kallas också matriser av matriser.

Fylla på en matris

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

Värdet på ett index för ett arrayelement kan också vara ett negativt heltal (-1, 0, 1, 2, 3, 4, ...)

Ta bort element från en matris

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

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

Lägga till anpassade metoder genom att åsidosätta Array () -funktionen

AutoHotkey är ett prototypbaserat programmeringsspråk , vilket innebär att du kan åsidosätta alla inbyggda funktioner / objekt när som helst. Detta exempel demonstrerar åsidosättande Array () -funktion för att lägga till metoder i ett anpassat klassobjekt.

; 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
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow