Collections und foreach

www.altova.com Dieses Kapitel drucken Vorherige Seite Eine Ebene nach oben Nächste Seite

Startseite >  Code Generator > SPL (Spy Programming Language) >

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.

 


© 2019 Altova GmbH