Collections und foreach
Collections und Iteratoren
Eine Collection enthält mehrere Objekte - wie ein gewöhnliches Array. Iteratoren lösen das Problem des Speicherns und Inkrementierens von Array Indizes beim Aufrufen von Objekten.
Syntax:
foreach iterator in collection statements next |
Beispiel:
[foreach $class in $classes if not $class.IsInternal ] class [=$class.Name]; [ endif next] |
Beispiel 2:
[foreach $i in 1 To 3 Write "// Step " & $i & "\n" ‘ Do some work next] |
Foreach iteriert durch alle Datenelemente in $classes und führt für die Anweisung den Code der auf die Anweisung folgt, bis zur nächsten Anweisung aus.
In jeder Iteration wird $class dem nächsten Klassenobjekt zugewiesen. Sie arbeiten einfach mit dem Klassenobjekt, anstelle classes[i]->class->Name(), zu verwenden, wie das in C++ der Fall wäre.
Alle Collection-Iteratoren haben die folgenden zusätzlichen Eigenschaften:
Index | der aktuelle Index beginnend mit 0 |
IsFirst | true, wenn das aktuelle Objekt das erste der Collection ist (Index ist 0) |
IsLast | true, wenn das aktuelle Objekt das letzte einer Collection ist |
Beispiel:
[foreach $enum in $facet.Enumeration if not $enum.IsFirst ], [ endif ]"[=$enum.Value]"[ next] |
Routinen zur Bearbeitung von Collections
collection SortByName( bAscending ) |
gibt eine Collection zurück, deren Elemente in aufsteigender oder absteigender Reihenfolge (unter Berücksichtigung der Groß- und Kleinschreibung) nach Namen sortiert sind .
collection SortByNameNoCase( bAscending ) |
gibt eine Collection zurück, deren Elemente in aufsteigender oder absteigender Reihenfolge (ohne Berücksichtigung der Groß- und Kleinschreibung) nach Namen sortiert sind .
Beispiel:
$SortedNestedClassifier = $Class.nestedClassifier.SortByNameNoCase( true ) |
collection SortByKind( bAscending ) |
gibt eine Collection zurück, deren Elemente in aufsteigender oder absteigender Reihenfolge nach kind-Namen (z.B. “Class”, “Interface”,…) sortiert sind.
collection SortByKindAndName( bAscendingKind, bAscendingName ) |
gibt eine Collection zurück, deren Elemente in aufsteigender oder absteigender Reihenfolge nach "kind" (z.B. “Class”, “Interface”,…) sortiert sind, wobei berücksichtigt wird, ob die "kinds" sortiert in aufsteigender oder absteigender Reihenfolge (unter Berücksichtigung der Groß- und Kleinschreibung) im Namen identisch sind.
collection SortByKindAndNameNoCase( bAscending ) |
gibt eine Collection zurück, deren Elemente in aufsteigender oder absteigender Reihenfolge nach "kind" (z.B. “Class”, “Interface”,…) sortiert sind, wobei berücksichtigt wird, ob die "kinds" sortiert in aufsteigender oder absteigender Reihenfolge (ohne Berücksichtigung der Groß- und Kleinschreibung) im Namen identisch sind.