Tokenliste, Liste, Map
Allgemein |
Siehe Abschnitt Datenstrukturen. |
Geltungsbereich / Lebensdauer |
Leben im Profil (und nicht in anderen Profilen) während des Profil-Laufs/-Tests. Ausnahme: Serialisierung (siehe unten). |
Listen
Unsere Dokumentation verwendet den Begriff Liste mit zwei verschiedenen Bedeutungen. Tokenliste (auch kommaseparierte Liste) und Liste.
Token innerhalb einer Tokenliste sind Textabschnitte, die durch ein Trennzeichen, z. B. Komma, getrennt sind.
Eine Tokenliste (auch kommaseparierte Liste) ist eine Auflistung von Token (Werten) innerhalb eines Strings, die durch Komma oder ein anderes Trennzeichen getrennt werden. Das Trennzeichen selbst darf nicht in einem der Token vorkommen. Verwendung z. B. in replace chars(a, list b, list c) oder get token(a, b, c, d).
Eine Liste ist ein Objekt, das durch einen Namen referenziert wird und in dem mehrere typisierte Werte in einer nummerierten Reihenfolge gespeichert werden können. Die Reihenfolge wird durch die Reihenfolge des Hinzufügens zu diesem List-Objekt bestimmt. Der anschließende Zugriff auf einen einzelnen Wert erfolgt mit der Index-Nummer des Wertes in der Liste und dem Namen der Liste. Wenn kein Name der Liste angegeben ist, wird die Liste mit dem Namen default verwendet. Anwendung z. B. in add to list(value a, name of list b).
In den Funktionen add to list(a,b,c, [skip empty d]), get value from list(position a, name of list b, delimiter c, item d) und anderen Funktionen werden beide Listen-Typen gleichzeitig verwendet.
Serialisierte/Autoserialisierte Listen
Siehe die Funktionen serialize map/list(a,b) und deserialize map/list(a,b,c).
Maps
Ein Map-Objekt kann, analog zu Listen, mehrere typisierte Werte speichern. Die Werte stehen aber in keiner Reihenfolge und können daher nicht durch einen Index angesprochen werden. Der Zugriff erfolgt später über einen eindeutigen Schlüssel (Key) und den Namen der Map. Wird kein Name angegeben, wird der Name default verwendet. Anwendung z. B. in add to map(key a, value b, name of map c).
Serialisierte/Autoserialisierte Maps
Siehe die Funktionen serialize map/list(a,b) und deserialize map/list(a,b,c).
Hinweise
Listen, Maps und Value Splitter verwenden getrennte Namensräume, d. h. der Name einer Liste kann auch als Name einer Map verwendet werden, ohne dass es Zusammenhänge zwischen List und Map mit gleichem Namen geben würde.
Listen und Maps sind Objekte, die im Arbeitsspeicher gehalten werden. Die Anzahl und Größe der Einzelwerte, die ein solches Objekt speichern kann, wird durch den verfügbaren freien Arbeitsspeicher begrenzt. Das gilt übrigens auch für jede Stringvariable und somit für Tokenlisten. Wenn man unbegrenzt viele Werte in ein Map- oder List-Objekt speichert, kann es zum Speicherüberlauf (OutOfMemoryError) des Arbeitsspeichers kommen. Für wirkliche Massendaten nutzen Sie deshalb bitte die Speicherung in einer Datenbanktabelle anstelle der Map- oder List-Objekte. List- oder Map-Objekte werden bei ihrer ersten Verwendung innerhalb des Jobs erzeugt. Sie existieren bis zum Ende des Jobs. Mit ihnen kann man also – analog zu Variablen – Werte zwischen verschiedenen Datenblättern übergeben. Um ein Map- oder List-Objekt zu Beginn jedes Datenblattes oder an anderer Stelle zu leeren, verwenden Sie bitte die "clear"-Funktionen.