决策语句

您可以让脚本根据您指定的条件选择要执行的任务。使用决策语句,您可以设计脚本以考虑不同的可能性或结果。这样,您就可以控制脚本中的线性流程。

这些语句的关键词是:

决策语句始终需要条件代码块。代码块用大括号 ( { } ) 括起来。SELECTSWITCH 语句的代码块使用两个附加关键字:

  • CASE:定义一组可能执行的语句之一。
  • DEFAULT:定义默认 CASE。如果无法执行其他 CASE 语句,则执行此语句。

对每类语句的讨论都包括语法摘要。这些摘要使用某些约定来表示语句的各个部分,以及每个部分是必需的还是可选的。

IFIF... ELSE 语句

说明:求值表达式并根据求值结果选择分支。

语法: IF <expression> <{ ... }> [ ELSE { ... } ]

Studio 操作:If

详细信息:IF 语句求值 <expression>。脚本会根据表达式的求值方式执行第一组大括号 { ... } 中的代码。该表达式的求值结果必须为 true,否则脚本将不会执行代码。

如果要指定脚本在表达式求值为 false 时的操作,也可以包含 ELSE 语句。ELSE 是可选语句。当有两种可能的操作,而脚本希望在其中作出选择时使用它。当只有一种可能的操作时,如果希望脚本只在满足指定条件 (<expression>) 时执行该操作,请单独使用 IF 。

在属于 IF 语句一部分的表达式 <expression> 中,使用布尔关闭 一种数据类型,它有两种可能值:真和假。运算符。您必须使用求值结果为 true 或 false 的表达式。例如,x=5 是一个有效的表达式,因为变量 x 的值要么等于 5,要么不等于 5。

Studio 不支持在一个 IF 中包含多条 ELSE 语句。不过,您可以嵌入 IF 语句:


IF A > B {
// Do something
}
ELSE {
	IF A = B {
	// Do something else
	}
	ELSE {
	// Do this
	}
}

示例

IF TEST = 1
   {
      ASSIGN contactID = "123456780"
      ASSIGN customerName = "XYZ International"
      ASSIGN CBWindowStart = #"{date} 8:00 AM"
      ASSIGN CBWindowEnd = #"{date} 4:30 PM"
   }

//String Comparison

IF customerName = "ABC Corporation"
   {
      ASSIGN contractLevel = "Gold"
   }
   ELSE
      {
         ASSIGN contractLevel = "Silver"
      }

//Numeric Comparision

IF contactID % 10 = 0
   {
      ASSIGN logCall = 1
   }
   ELSE
      {
         ASSIGN logCall = 0
      }

//DateTime Comparison

ASSIGN myTime = #"{time}"

IF myTime >= CBWindowStart && myTime  <= CBWindowEnd
   {
      ASSIGN offerCallback = "True"
   }
   ELSE
      {
         ASSIGN offerCallback = "False"
      }

SELECT 语句

说明:根据第一个求值为 true 的表达式执行一组命令。

语法: SELECT <{ CASE <expression> [{ ... }] [CASE <expression> <{ ... }>] [CASE ...] [DEFAULT <{ ... }>] }>

详细信息:SELECT 语句中,脚本会从顶部开始求值每个 CASE <expression>,直到找到第一个求值为 true 的表达式。对于第一个 CASE <expression> 求值为 true 的表达式,SELECT 执行 CASE <expression> 大括号 [{ ... }] 内的代码。

如果没有一个 CASE <expression> 求值结果为 true,则脚本将执行可选的 DEFAULT { ... } 代码。

至少需要一条 CASE 语句。如果包含,DEFAULT { ... } 语句必须是 CASE 语句列表中的最后一个子句。

例如:

SELECT
{
	CASE name="Odin" { agentid = 123 }
	CASE name="Frigg" { agentid = 345 }
	CASE name.length = 0
	 {
	   ASSIGN agentid = -1
	   ASSIGN error = "Invalid name"
	 }
	DEFAULT { ASSIGN agentid = 999 }
} 

SWITCH 语句

描述:求值指定的变量并执行匹配 CASE 定义的操作。

语法: SWITCH <var> <{CASE <literal> [{ ... }] [CASE <literal> [{ ... }]] [CASE ...] [DEFAULT [{ ... }]] }>

详细信息: SWITCH 语句将变量 <var> 的值与每个 CASE <literal> 的文字值进行比较。找到匹配的 CASE 后,SWITCH 执行并转移到与匹配 CASE <literal> 相关联的大括号 { ... } 中的代码。

如果没有 CASE <literal><var> 匹配,则执行可选的 DEFAULT { ...} 代码。DEFAULT 必须是嵌入 SWITCH 语句的语句中的最后一条子句。

SWITCH 只能求值一个变量。不能求值表达式。如果使用表达式,脚本将无法运行。

至少应有一条 CASE。所有 CASE 语句必须具有相同的<literal>类型。第一条 CASE 决定了其余 CASE 语句的类型。如果任何 CASE 语句的类型与第一条 CASE 不同,编译器就会出错。以下是所有有效的文字类型:

  • CASE "john"
  • CASE 512
  • CASE #"5/15/2050"
  • CASE #"6/1/2050 7:00am"
  • CASE #"7am"

例如:

IF TEST = 1
{
  ASSIGN MyDate = "07/03/2023" //This date falls on a Monday
}
ASSIGN MyDow = MyDate.asdatedow
SWITCH MyDow
{
  CASE 0   { ASSIGN NewToday = "Sunday"  }
  CASE 1   { ASSIGN NewToday = "Monday"  }
  CASE 2   { ASSIGN NewToday = "Tuesday" }
  CASE 3   { ASSIGN NewToday = "Wednesday" }
  CASE 4   { ASSIGN NewToday = "Thursday" }
  CASE 5   { ASSIGN NewToday = "Friday"  }
  CASE 6   { ASSIGN NewToday = "Saturday"   }
}

如果多条 CASE 使用相同的代码 { ... },则无需在每条后添加代码块。取而代之的是,应逐个列出 CASE 关键字,并在使用该代码的最后一个 CASE 后面列出代码。这就是所谓的 case 贯穿。只要 SWITCH 遇到的 case 确实有代码块,就可以这样做。以下示例显示了 case 贯穿。对于 CASE 1、2 和 3,输出值为 hi。对于 CASE 5 和 6,输出为 bye

SWITCH x
{
	CASE 1
	CASE 2
	CASE 3 { TRACE "hi" }
	CASE 5
	CASE 6 { TRACE "bye" }
}

用例:SWITCH 允许根据指定变量包含的内容产生特定结果。例如,可以让脚本求值一个包含地区代码的变量。您可以为每个可能的地区代码定义一个 CASE,然后让脚本为 state 变量添加一个与地区代码分配给的州相匹配的值。例如:

SWITCH areaCode
{
	CASE 603 { state =  "New Hampshire" }
	CASE 614 { state =  "Ohio" }
	CASE 628 { state =  "California" }
	CASE 646 { state =  "New York" }
	CASE 667 { state =  "Maryland" }
}

CASE 语句

说明:定义一系列可能执行的语句之一。与 SWITCHSELECT 一起使用。

语法:各不相同;请参见 SWITCHSELECT

Studio 操作:Case

详细信息:CASE必须在 SWITCHSELECT 语句的条件代码块中使用。添加一条或多条 CASE 语句,定义脚本可能执行的代码块。至少需要一条 CASE

相关:包含DEFAULT一条语句,用于定义在指定 CASE 语句均不适用时使用的情况。

DEFAULT 语句

说明:定义当指定的 CASE 均不适用时使用的 CASE 代码块。与 SWITCHSELECT 一起使用。

语法: 各不相同。请参见 SWITCHSELECT

详细信息:DEFAULT必须与 SWITCHSELECT 代码块一起使用,且必须至少有一条 CASE 语句。DEFAULT 不能单独使用。DEFAULT 始终是可选项。它必须是 CASE 语句列表中的最后一个子句。

ELSE 语句

说明:定义 IF 表达式求值为 false 时脚本执行的语句。

语法: { ELSE ... };请参见 IF

详细信息:ELSE 始终是可选项。如果要指定表达式求值为 false 时脚本要执行的操作,可以包含一条 ELSE 语句。当有两种可能的操作,需要脚本在其中做出选择时,可以使用该语句。