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 & "\" ‘ Do some work next] |
Die erste Zeile:
\$classes ist das globale Objekt von allen Typen. \$classes ist eine Collection (Sammlung) von einzelnen Klassenobjekten.
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 |
Current | das aktuelle Objekt (dies ist implizit, wenn es nicht definiert ist und kann weggelassen werden) |
Beispiel:
[foreach \$enum in \$facet.Enumeration if not \$enum.IsFirst ], [ endif ]"[=\$enum.Value]"[ next] |