Colecciones y foreach

www.altova.com Imprimir este apartado Página anterior Subir un nivel Página siguiente

Inicio >  Guía y referencia del usuario > Generador de código > SPL: el lenguaje de programación Spy >

Colecciones y foreach

Colecciones e iteradores

 

Una colección contiene varios objetos, como una matriz normal y corriente. Los iteradores sirven para almacenar e incrementar índices de matriz al acceder a objetos.

 

Sintaxis:

foreach iterador in colección

 instrucciones

next

 

Ejemplo nº1:

[foreach $class in $classes

 if not $class.IsInternal

         ]        class [=$class.Name];

[        endif

next]

 

Ejemplo 2:

[foreach $i in 1 To 3

      Write "// Step " & $i & "\n"

      ‘ Do some work

next]

 

 

En la primera línea $classes es el objeto global de todos los tipos generados. Es una colección de diferentes objetos de clase.

 

La instrucción foreach recorre todos los elementos de $classes y en cada uno de ellos ejecuta el código que sigue a la instrucción hasta llegar a la instrucción next.

 

En cada iteración se asigna $class al siguiente objeto de clase. Simplemente se trabaja con el objeto de clase en lugar de usar classes[i]->Name() como en C++.

 

Los iteradores de colección tienen estas propiedades adicionales:

 

Index

El índice actual, empezando por 0

IsFirst

true si el objeto actual es el primer objeto de la colección (el índice es 0)

IsLast

true si el objeto actual es el último objeto de la colección

Current

El objecto actual (este es implícito si no se especifica y se puede omitir)

 

Ejemplo:

[foreach $enum in $facet.Enumeration

 if not $enum.IsFirst

         ], [

 endif

 ]"[=$enum.Value]"[

next]

 

Rutinas para la manipulación de colecciones:

 

collection SortByName( bAscending )

devuelve una colección cuyos elementos están ordenados por nombre (con distinción de mayúsculas y minúsculas) en orden ascendente o descendente.

 

collection SortByNameNoCase( bAscending )

devuelve una colección cuyos elementos están ordenados por nombre (sin distinción de mayúsculas y minúsculas) en orden ascendente o descendente.

 

Ejemplo:

$SortedNestedClassifier = $Class.nestedClassifier.SortByNameNoCase( true )

 

collection SortByKind( bAscending )

devuelve una colección cuyos elementos están ordenados por tipo (p. ej. clase, interfaz...) en orden ascendente o descendente.

 

collection SortByKindAndName( bAscendingKind, bAscendingName )

devuelve una colección cuyos elementos están ordenados por tipo (p. ej. clase, interfaz...) en orden ascendente o descendente y si el tipo es idéntico al nombre (con distinción de mayúsculas y minúsculas en orden ascendente o descendente).

 

collection SortByKindAndNameNoCase( bAscending )

devuelve una colección cuyos elementos están ordenados por tipo (p. ej. clase, interfaz...) en orden ascendente o descendente y si el tipo es idéntico al nombre (sin distinción de mayúsculas y minúsculas en orden ascendente o descendente).

 

 


© 2019 Altova GmbH