前页 | 后页 |
分支宏
分支宏提供 if-then-else 结构。 CTF 通过这些宏支持有限形式的分支:
- 如果
- 否则如果
- else
- 万一
- endTemplate(退出当前模板)
%if <测试> <操作员> <测试>%
其中 <operator> 可以是以下之一:
- ==
- !=
- <(数学比较,小于)
- >(数学比较,大于)
- <=(数学比较,小于等于)
- >=(数学比较,大于等于)
- 一个string文字,用双引号括起来
- 直接替换宏,不带百分号
- 变量引用
可以嵌套分支,并且可以使用以下之一指定多个条件:
- 和,或
- 或者
如果字符串的条件语句区分大小写,则“a字符串”不等于“ A STRING”。因此,在某些情况下,最好设置变量 $str=TO_LOWER(variable) 或 TO_UPPER(variable),然后与特定情况进行比较。
条件语句不支持宏。最好将宏( string )的结果赋给一个变量,然后在比较中使用该变量。
$fldType = % TO_LOWER ($parameter1)%
$COMMENT = "使用日期和时间字段类型的前 4 个字符"
$fldType4 = % 左 ($fldType, 4)%
%if $fldType4 == "日期"%
约会时间
%万一%
这需要一个值为“Datetime”、“DATETIME”或“Date”的参数,并返回“Datetime”。
endif 或 endTemplate 宏必须用于表示分支的结束。此外,如果相应的分支正在执行,endTemplate 宏会使模板立即返回。
示例1
%if elemType == "接口"%
;
%别的%
%操作体%
%万一%
在这种情况下:
- 如果接口为“接口”,则返回分号
- 如果体不是“接口”,则调用一个名为 Operation body 的模板
示例2
$bases="ClassBase"
$interfaces=""%
%if $bases !="" 和 $interfaces !=""%
: $bases, $interfaces
%elseIf $bases !=""%
: $基础
%elseIf $interfaces !=""%
: $接口
%万一%
在这种情况下,返回的文本是 ':ClassBase'。
使用布尔值的条件
当使用涉及系统复选框(布尔字段)的条件设置分支时,例如 Attribute.Static (attStatic),条件语句将写为:
%if attStatic == " T "%
例如:
% 如果 attCollection == " T " 或 attOrderedMultiplicity == " T " %
% 结束模板 %