Si necesita hacer un bucle en o iterar a través de un conjunto de Objetos que están contenidos dentro o están debajo del objeto actual, puede hacerlo utilizando el macro %lista. Este macro realiza un paso iterativo en todos los objetos en el alcance de la plantilla actual, y llama a otra plantilla para procesar a cada uno.
La estructura básica es:
%list=<TemplateName> @separator=<string> @indent=<string> ( <conditions> ) %
donde <string> es una cadena literal entre comillas dobles y <TemplateName> puede ser alguno de los siguientes nombres de plantilla:
•
|
Plantilla Personalizada (las plantillas personalizadas le permiten definir sus propias plantillas)
|
<conditions> es opcional y se ven igual que las condiciones para las declaraciones if y elseIf.
Ejemplo
En una transformación de Clase, la Clase puede contener múltiples Atributos; el siguiente ejemplo llama a la transformación del Atributo y tiene como salida el resultado de procesar la transformación para cada atributo de la Clase en alcance. La lista resultante separa sus ítems con una nueva línea individual y les pone sangría en dos espacios respectivamente. Si la Clase de alcance tenía algunos atributosestereotipados, serían generados utilizando la plantilla apropiadamente especializada.
%list="Attribute" @separator="\n" @indent=" "%
El atributo separador, denotado arriba por @separator, especifica el espacio que debería ser utilizado entre los ítems de la lista, excluyendo el último ítem de la lista.
El atributosangría, denotado por @indent, especifica el espacio de sangría que debería tener cada línea en la salida generada.
Casos Especiales
Hay algunos casos especiales para considerar al utilizar el macro %lista:
•
|
Si la plantilla Atributo es utilizada como un argumento para el macro %lista, esto también genera atributos derivados desde Asociaciones al ejecutar la plantilla LinkedAttribute apropiada
|
•
|
Si la plantilla ClassBase es utilizada como un argumento para el macro %lista, esto también genera bases de Clase derivadas desde vínculos en el modelo al ejecutar la plantilla LinkedClassBase apropiada
|
•
|
Si la plantilla ClassInterface es utilizada como un argumento para el macro %lista, esto también genera bases de Clase derivadas desde vínculos en el modelo al ejecutar la plantilla LinkedClassInterface apropiada
|
•
|
Si InnerClass o InnerClassImpl es utilizado como un argumento para el macro %lista, estas Clases son generadas utilizando las plantillas Clase y ClassImpl respectivamente; estos argumentos dirigen que las plantillas deberían ser procesadas basado en las Clases internas de la Clase al alcance
|
Aprender más
|