Map-Objekt

class Map extends Object

Ein Map-Objekt ordnet einen Satz von Werten, Schlüssel genannt, einem anderen Satz von Werten zu. Ein Schlüssel und der Wert, dem er zugeordnet ist, werden als Schlüssel-Wert-Paar bezeichnet. Ein Map-Objekt kann beliebig viele Schlüssel-Wert-Paare enthalten, aber jeder Schlüssel muss eindeutig sein.

Ein Schlüssel kann ein Integer, eine Objektreferenz oder eine nullterminierte Zeichenkette sein. Der Vergleich von Zeichenkettenschlüsseln erfolgt Groß-/Kleinschreibung-sensitiv, während Objekte via Referenz/Adresse verglichen werden. Float-Schlüssel werden automatisch in eine Zeichenkette umgewandelt.

Die einfachste Verwendung eines Map-Objekts besteht darin, ein Schlüssel-Wert-Paar über die implizite __Item-Eigenschaft abzurufen oder zu setzen, indem man einfach den Schlüssel in eckigen Klammern hinter das Map-Objekt schreibt. Zum Beispiel:

Farben := Map()
Farben["Rot"] := "ff0000"
Farben["Grün"] := "00ff00"
Farben["Blau"] := "0000ff"
for Farbe in Array("Blau", "Grün")
    MsgBox Farben[Farbe]

"MapObj" wird hier stellvertretend für ein beliebiges Map-Objekt verwendet, da "Map" die Klasse selbst ist.

Zusätzlich zu den von Object geerbten Methoden und Eigenschaften haben Map-Objekte die folgenden vordefinierten Methoden und Eigenschaften.

Inhaltsverzeichnis

Statische Methoden

Call

Erstellt ein Map-Objekt und setzt Elemente.

MapObj := Map(Schlüssel1, Wert1, Schlüssel2, Wert2, ...)
MapObj := Map.Call(Schlüssel1, Wert1, Schlüssel2, Wert2, ...)

Dies ist dasselbe wie, als würde man jedes Element mit MapObj[Schlüssel] := Wert setzen, außer dass __Item nicht aufgerufen wird und Capacity automatisch angepasst wird, um zu vermeiden, dass es während eines einzigen Aufrufs mehrfach erweitert wird.

Parameter sind durch __New definiert.

Methoden

Clear

Entfernt alle Schlüssel-Wert-Paare aus einem Map-Objekt.

MapObj.Clear()

Clone

Gibt eine flache Kopie eines Map-Objekts zurück.

Klon := MapObj.Clone()

Alle Schlüssel-Wert-Paare werden in das neue Map-Objekt 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.

Delete

Entfernt ein Schlüssel-Wert-Paar aus einem Map-Objekt.

EntfernterWert := MapObj.Delete(Schlüssel)

Parameter

Schlüssel

Typ: Integer, Objekt oder Zeichenkette

Ein beliebiger Schlüssel. Wenn das Map-Objekt diesen Schlüssel nicht enthält, wird ein UnsetItemError ausgelöst.

Rückgabewert

Typ: Beliebig

Diese Methode gibt den entfernten Wert zurück.

Get

Gibt den Wert eines bestimmten Schlüssels oder einen Standardwert zurück.

Wert := MapObj.Get(Schlüssel , Standardwert)

Diese Methode bewirkt folgendes:

Wenn Standardwert weggelassen wird, ist dies äquivalent zu MapObj[Schlüssel], außer dass __Item nicht aufgerufen wird.

Has

Gibt 1 (true) zurück, wenn der angegebene Schlüssel einen Wert in einem Map-Objekt hat, andernfalls 0 (false).

MapObj.Has(Schlüssel)

Set

Setzt beliebig viele Elemente.

MapObj.Set(Schlüssel, Wert, Schlüssel2, Wert2, ...)

Dies ist dasselbe wie, als würde man jedes Element mit MapObj[Schlüssel] := Wert setzen, außer dass __Item nicht aufgerufen wird und Capacity automatisch angepasst wird, um zu vermeiden, dass es während eines einzigen Aufrufs mehrfach erweitert wird.

Rückgabewert

Typ: Objekt

Diese Methode gibt das Map zurück.

__Enum

Enumeriert Schlüssel-Wert-Paare.

For Schlüssel , Wert in MapObj

Gibt einen neuen Enumerator zurück. Diese Methode wird typischerweise nicht direkt aufgerufen. Stattdessen wird das Map-Objekt direkt an eine For-Schleife übergeben, die __Enum einmal aufruft und dann den Enumerator pro Schleifenwiederholung einmal aufruft. Jeder Aufruf des Enumerators gibt den nächsten Schlüssel und/oder Wert zurück. Die Variablen der For-Schleife entsprechen den folgenden Parametern des Enumerators:

Schlüssel

Typ: Integer, Objekt oder Zeichenkette

Der Schlüssel.

Wert

Typ: Beliebig

Der Wert.

__New

Setzt Elemente. Äquivalent zu Set.

MapObj.__New(Schlüssel, Wert, Schlüssel2, Wert2, ...)

Diese Methode existiert zur Unterstützung von Call und ist nicht für den direkten Aufruf gedacht. Siehe Konstruktion und Destruktion.

Eigenschaften

Count

Ruft die Anzahl der Schlüssel-Wert-Paare in einem Map-Objekt ab.

Anzahl := MapObj.Count

Capacity

Ermittelt oder setzt die aktuelle Kapazität eines Map-Objekts.

MaxElemente := MapObj.Capacity
MapObj.Capacity := MaxElemente

MaxElemente ist ein Integer, der die maximale Anzahl von Schlüssel-Wert-Paaren repräsentiert, die das Map-Objekt enthalten kann, bevor es automatisch erweitert werden muss. Wenn ein Wert kleiner als die aktuelle Anzahl von Schlüssel-Wert-Paaren gesetzt wird, wird stattdessen diese Anzahl verwendet und ungenutzter Speicher freigegeben.

CaseSense

Ermittelt oder setzt die Groß-/Kleinschreibung-Sensitivität eines Map-Objekts.

AktuelleEinstellung := MapObj.CaseSense
MapObj.CaseSense := NeueEinstellung

AktuelleEinstellung ist NeueEinstellung, falls zugewiesen, andernfalls standardmäßig On (aber beachten Sie, dass diese Eigenschaft nur die Zeichenkettenvariante der aktuellen Einstellung abruft).

NeueEinstellung ist eine(r) der folgenden Zeichenketten oder Integer (boolesch):

On oder 1 (true): Die Suche nach Schlüsseln erfolgt Groß-/Kleinschreibung-sensitiv. Standardeinstellung.

Off oder 0 (false): Die Suche nach Schlüsseln erfolgt nicht Groß-/Kleinschreibung-sensitiv, d.h. die Großbuchstaben A bis Z und die entsprechenden Kleinbuchstaben werden als identisch betrachtet.

Locale: Die Suche nach Schlüsseln erfolgt nicht Groß-/Kleinschreibung-sensitiv, gemäß den Regeln der aktuellen Sprach- und Regionseinstellungen des Benutzers. Zum Beispiel behandeln die meisten englischen und westeuropäischen Sprach- und Regionseinstellungen die Großbuchstaben A bis Z, einschließlich ASCII-fremde Großbuchstaben wie Ä und Ü, und die entsprechenden Kleinbuchstaben als identisch. Locale ist 1- bis 8-mal langsamer als Off, abhängig von den zu vergleichenden Zeichenketten.

Wenn das Map-Objekt nicht leer ist und dieser Eigenschaft etwas zugewiesen wird, wird eine Ausnahme ausgelöst.

Default

Definiert den Standardwert, der zurückgegeben wird, wenn ein Schlüssel nicht gefunden wird.

MapObj.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 nicht gefunden werden kann, 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.

__Item

Ermittelt oder setzt den Wert eines Schlüssel-Wert-Paares.

Wert := MapObj[Schlüssel]
Wert := MapObj.__Item[Schlüssel]
MapObj[Schlüssel] := Wert
MapObj.__Item[Schlüssel] := Wert

Beim Abrufen eines Wertes muss Schlüssel ein eindeutiger Wert sein, der zuvor einem anderen Wert zugeordnet wurde. Es wird ein UnsetItemError ausgelöst, wenn Schlüssel keinen zugeordneten Wert im Map-Objekt hat, es sei denn, es ist eine Default-Eigenschaft definiert, dann wird deren Wert zurückgegeben.

Beim Zuweisen eines Wertes kann Schlüssel ein beliebiger Wert sein, der mit Wert assoziiert werden kann, d.h. der Schlüssel wird verwendet, um später auf Wert zugreifen zu können. Float-Schlüssel werden automatisch in eine Zeichenkette umgewandelt.

Der Eigenschaftsname __Item wird typischerweise weggelassen, wie oben gezeigt, ist aber nützlich, um die Eigenschaft zu überschreiben.