预订演示
前页 后页

分支宏

分支宏提供 if-then-else 结构。 CTF 通过这些宏支持有限形式的分支:

  • 如果
  • 否则如果
  • else
  • 万一
  • endTemplate(退出当前模板)
if 和 elseIf 宏的基本结构是:

%if <测试> <操作员> <测试>%

其中 <operator> 可以是以下之一:

  • ==
  • !=
  • <(数学比较,小于)
  • >(数学比较,大于)
  • <=(数学比较,小于等于)
  • >=(数学比较,大于等于)
<test> 可以是以下之一:
  • 一个string文字,用双引号括起来
  • 直接替换宏,不带百分号
  • 变量引用
注记,如果您使用其中一种数学比较运算符,<test> 必须是string格式的十进制数。

可以嵌套分支,并且可以使用以下之一指定多个条件:

  • 和,或
  • 或者
指定多个条件时,'and'和'or'的优先顺序相同,从左到右处理条件。

如果字符串的条件语句区分大小写,则“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 " %

% 结束模板 %

了解更多