Ramificar Macros [Guía de Usuario de Enterprise Architect] |
Top Previous Next |
Ramificar Macros proporcionan construcciones if-then-else. La CTF soporta una forma limitada de ramificación a través de los siguientes macros:
La estructura básica de los macros if y elseIf es: %if <test> <operator> <test>%
donde <operator> puede ser uno de:
y <test> puede ser uno de:
Las Ramas pueden estar anidadas, y múltiples condiciones pueden ser especificadas utilizando uno de:
Al especificar múltiples condiciones, and y or tienen el mismo orden de precedencia, y las condiciones son procesadas de izquierda a derecha. Si las declaraciones condicionales en strings son sensibles a mayúsculas y minúsculas, "a String" no es equivalente a "A STRING". Por lo tanto en algunas situaciones es mejor establecer la variable $str= TO_LOWER(variable) o TO_UPPER(variable) y luego comparar a un caso específico. Los Macros no están soportados en las declaraciones condicionales. Es mejor asignar los resultados de un macro (string) a una variable, y luego utilizar la variable en la comparación.
$fldType = %TO_LOWER($parameter1)% $COMMENT = "Use the first 4 characters for Date and Time field types" $fldType4 = %LEFT($fldType,4)% %if $fldType4=="date"% Datetime %endif%
Esto toma un parámetro de valor “Datetime”, “DATETIME” o “Date”, y devuelve “Datetime”. Los macros endif o endTemplate deben ser utilizados para significar el final de una rama. Aparte, el macro endTemplate causa que la plantilla se devuelva inmediatamente, si la rama correspondiente está siendo ejecutada. Ejemplo 1: %if elemType == "Interface"% ; %else% %OperationBody% %endif%
En este caso:
Ejemplo 2: $bases="ClassBase" $interfaces=""% %if $bases !="" and $interfaces !=""% : $bases, $interfaces %elseIf $bases !=""% : $bases %elseIf $interfaces !=""% : $interfaces=""% %endif%
En este caso el texto devuelto es :ClassBase. Condiciones utilizando Valor Boolean: Al hacer ramificaciones utilizando condiciones que involucran una casilla de sistema (campos boolean), tal como Attribute.Static (attStatic) la declaración condicional estaría escrita como: %if attStatic == "T"%
Por ejemplo: %if attCollection=="T" or attOrderedMultiplicity == "T"% %endTemplate%
Aprender más |