class Array extends Object
Ein Array-Objekt enthält eine Liste oder Sequenz von Werten.
Der Zugriff auf Werte erfolgt über ihre Position im Array (auch Array-Index genannt), wobei Position 1 das erste Element ist.
Arrays werden häufig erstellt, indem eine Liste von Werten in eckige Klammern gesetzt wird. Zum Beispiel:
veg := ["Spargel", "Brokkoli", "Gurke"] Loop veg.Length MsgBox veg[A_Index]
Ein negativer Index kann verwendet werden, um auf Elemente in umgekehrter Richtung zuzugreifen, d.h. -1 ist das letzte Element, -2 ist das vorletzte Element usw.
Der Versuch, einen Array-Index zu verwenden, der außerhalb der Grenzen liegt (z.B. 0 oder wenn sein Absolutwert größer als die Länge des Arrays ist), wird als Fehler gewertet und bewirkt, dass ein IndexError ausgelöst wird. Der beste Weg, neue Elemente zum Array hinzuzufügen, ist der Aufruf von InsertAt oder Push. Zum Beispiel:
Benutzer := Array() Benutzer.Push A_UserName MsgBox Benutzer[1]
Ein Array kann auch erweitert werden, indem Length ein größerer Wert zugewiesen wird. Dadurch ändert sich, welche Indizes gültig sind, aber Has zeigt an, dass die neuen Elemente keinen Wert haben. Elemente ohne Wert werden typischerweise für variadische Aufrufe oder von variadischen Funktionen verwendet.
"ArrayObj" wird hier stellvertretend für ein beliebiges Array-Objekt verwendet, da "Array" die Klasse selbst ist.
Zusätzlich zu den von Object geerbten Methoden und Eigenschaften haben Array-Objekte die folgenden vordefinierten Methoden und Eigenschaften.
Erstellt ein neues Array, das die angegebenen Werte enthält.
ArrayObj := Array(Wert, Wert2, ..., WertN) ArrayObj := Array.Call(Wert, Wert2, ..., WertN)
Parameter sind durch __New definiert.
Gibt eine flache Kopie eines Arrays zurück.
Klon := ArrayObj.Clone()
Alle Array-Elemente werden in das neue Array kopiert. Objektreferenzen werden kopiert (wie bei einer normalen Zuweisung), nicht die Objekte selbst.
Eigene Eigenschaften, eigene Methoden und Basis werden wie bei Obj.Clone kopiert.
Entfernt den Wert eines Array-Elements und hinterlässt den Index ohne Wert.
EntfernterWert := ArrayObj.Delete(Index)
Typ: Integer
Ein gültiger Array-Index.
Typ: Beliebig
Diese Methode gibt den entfernten Wert zurück (leer, wenn es keinen gibt).
Diese Methode hat keinen Einfluss auf die Länge des Arrays.
Es wird ein ValueError ausgelöst, wenn Index außerhalb des Bereichs liegt.
Gibt den Wert eines bestimmten Index oder einen Standardwert zurück.
Wert := ArrayObj.Get(Index , Standardwert)
Diese Methode bewirkt folgendes:
ArrayObj.Default
zurückgeben, falls definiert.Wenn Standardwert weggelassen wird, ist dies äquivalent zu ArrayObj[Index]
, außer dass __Item nicht aufgerufen wird.
Gibt eine Zahl ungleich 0 zurück, wenn der Index gültig ist und einen Wert hat.
HatIndex := ArrayObj.Has(Index)
Fügt einen oder mehrere Werte auf einer bestimmten Position ein.
ArrayObj.InsertAt(Index, Wert1 , Wert2, ... WertN)
Typ: Integer
Die Position, auf der Wert1 eingefügt werden soll. Nachfolgende Werte werden auf Index+1, Index+2 usw. eingefügt. Die Angabe von 0 entspricht der Angabe von Length + 1.
Typ: Beliebig
Ein oder mehrere Werte, die eingefügt werden sollen. Um ein Array von Werten einzufügen, übergeben Sie dasArray*
als letzten Parameter.
InsertAt ist das Gegenstück zu RemoveAt.
Alle Elemente, die sich auf oder rechts von Index befinden, werden nach rechts verschoben. Fehlende Parameter werden ebenfalls eingefügt, aber ohne Wert. Zum Beispiel:
x := [] x.InsertAt(1, "A", "B") ; => ["A", "B"] x.InsertAt(2, "C") ; => ["A", "C", "B"] ; Fehlende Elemente bleiben erhalten: x := ["A", , "C"] x.InsertAt(2, "B") ; => ["A", "B", , "C"] x := ["C"] x.InsertAt(1, , "B") ; => [ , "B", "C"]
Es wird ein ValueError ausgelöst, wenn Index kleiner als -ArrayObj.Length
oder größer als ArrayObj.Length + 1
ist. Bei einem Array mit z.B. 3 Elementen muss Index im Bereich von -3 bis 4 liegen.
Entfernt das letzte Array-Element und gibt es zurück.
EntfernterWert := ArrayObj.Pop()
Alle folgenden sind äquivalent:
EntfernterWert := ArrayObj.Pop() EntfernterWert := ArrayObj.RemoveAt(ArrayObj.Length) EntfernterWert := ArrayObj.RemoveAt(-1)
Wenn das Array leer ist (Length ist 0), wird ein Error ausgelöst.
Fügt Werte am Ende eines Arrays an.
ArrayObj.Push(Wert, Wert2, ..., WertN)
Entfernt Elemente aus einem Array.
EntfernterWert := ArrayObj.RemoveAt(Index) ArrayObj.RemoveAt(Index, Länge)
Typ: Integer
Der Index eines oder mehrerer Werte, die entfernt werden sollen.
Typ: Integer
Wenn weggelassen, wird nur ein Element entfernt. Andernfalls geben Sie die Länge des Wertebereichs an, der entfernt werden soll.
Typ: Beliebig
Wenn Länge weggelassen wird, wird der entfernte Wert zurückgegeben (leer, wenn keine entfernt wurden). Andernfalls gibt es keinen Rückgabewert.
RemoveAt ist das Gegenstück zu InsertAt.
Es wird ein ValueError ausgelöst, wenn der via Index und Länge angegebene Bereich nicht vollständig innerhalb der aktuellen Grenzen des Arrays liegt.
Die restlichen Elemente rechts von Pos werden um den via Länge definierten Wert (oder standardmäßig um 1) nach links verschoben. Zum Beispiel:
x := ["A", "B"] MsgBox x.RemoveAt(1) ; A MsgBox x[1] ; B x := ["A", , "C"] MsgBox x.RemoveAt(1, 2) ; 1 MsgBox x[1] ; C
Fügt Elemente an. Äquivalent zu Push.
ArrayObj.__New(Wert, Wert2, ..., WertN)
Diese Methode existiert zur Unterstützung von Call und ist nicht für den direkten Aufruf gedacht. Siehe Konstruktion und Destruktion.
Enumeriert Array-Elemente.
For Wert in ArrayObj
For Index, Wert in ArrayObj
Gibt einen neuen Enumerator zurück. Diese Methode wird typischerweise nicht direkt aufgerufen. Stattdessen wird das Array-Objekt direkt an eine For-Schleife übergeben, die __Enum einmal aufruft und dann den Enumerator pro Schleifenwiederholung einmal aufruft. Jeder Aufruf des Enumerators gibt das nächste Array-Element zurück. Die Variablen der For-Schleife entsprechen den folgenden Parametern des Enumerators:
Typ: Integer
Der Array-Index, typischerweise derselbe wie A_Index. Dies ist nur im 2-Parameter-Modus verfügbar.
Typ: Beliebig
Der Wert (wenn es keinen gibt, bekommt Wert den Status uninitialisiert).
Ermittelt oder setzt die Länge eines Arrays.
Länge := ArrayObj.Length
ArrayObj.Length := Länge
Die Länge berücksichtigt Elemente, die keinen Wert haben. Eine Erhöhung der Länge ändert, welche Indizes als gültig angesehen werden, aber die neuen Elemente haben keinen Wert (wie von Has angezeigt). Eine Verringerung der Länge kürzt das Array.
MsgBox ["A", "B", "C"].Length ; 3 MsgBox ["A", , "C"].Length ; 3
Ermittelt oder setzt die aktuelle Kapazität eines Arrays.
MaxElemente := ArrayObj.Capacity
ArrayObj.Capacity := MaxElemente
MaxElemente ist ein Integer, der die maximale Anzahl von Elementen repräsentiert, die das Array enthalten kann, bevor es automatisch erweitert werden muss. Wenn ein Wert kleiner als Length gesetzt wird, werden Elemente entfernt.
Definiert den Standardwert, der bei Elementen ohne Wert zurückgegeben wird.
ArrayObj.Default := Wert
Diese Eigenschaft ist standardmäßig nicht vorhanden, kann aber via Skript definiert werden. Wenn definiert, wird ihr Wert durch __Item oder Get zurückgegeben, wenn das angeforderte Element keinen Wert hat, anstatt einen UnsetItemError auszulösen. Die Eigenschaft kann mit den üblichen Mitteln implementiert werden, einschließlich einer dynamischen Eigenschaft oder einer Metafunktion, aber um festzustellen, welcher Schlüssel abgefragt wurde, müsste stattdessen __Item oder Get überschrieben werden.
Das Setzen eines Standardwerts verhindert nicht, dass ein Fehler ausgelöst wird, wenn der Index außerhalb des Bereichs liegt.
Ermittelt oder setzt den Wert eines Array-Elements.
Wert := ArrayObj[Index]
Wert := ArrayObj.__Item[Index]
ArrayObj[Index] := Wert
ArrayObj.__Item[Index] := Wert
Index ist ein Integer, der einen gültigen Array-Index repräsentiert, d.h. ein Integer mit einem Absolutwert im Bereich von 1 bis Length. Ein negativer Index kann verwendet werden, um auf Elemente in umgekehrter Richtung zuzugreifen, d.h. -1 ist das letzte Element, -2 ist das vorletzte Element usw. Der Versuch, einen Index zu verwenden, der außerhalb der Grenzen liegt (z.B. 0 oder wenn sein Absolutwert größer als die Länge des Arrays ist), wird als Fehler gewertet und bewirkt, dass ein IndexError ausgelöst wird.
Der Eigenschaftsname __Item wird typischerweise weggelassen, wie oben gezeigt, ist aber nützlich, um die Eigenschaft zu überschreiben.