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 & "\"
‘ 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).