7. 流程控制

7.1 概述

目前 WTCD 的传统流程控制只原生提供了 switch

7.2 switch

switch 语句语法如下:

switch <valueExpr> [
  <matchList1> <matchExpr1>
  <matchList2> <matchExpr2>
  ...
  [defaultExpr]
]

举个例子:

declare number value = // ...
declare number result = switch value [
  [ 1 5 10 ] 200
  [ 3 7 ] 300
  400
]

在上述例子中,如果 value 的值是 1 或 5 或 10,则 result 会变成 200。如果 value 的值是 3 或 7,则 result 会变成 300。否则 result 会变成 400。

在 WTCD 中,如果没有提供最后的 defaultExpr,那么在如果没有匹配时就会报错。

此外,WTCD 的 switch 时没有 fall through 的。也就是说,上一个 case 执行完后不会进入下一个 case,因此也没有必要使用 break

另外,每一个 matchList 都可以是一个表达式。上述 switch 语句还可以写成:

declare number value = // ...
declare list list1 = [ 1 5 10 ]
declare list list2 = [ 3 7 ]
declare number result = switch value [
  list1 200
  list2 300
  400
]

7.3 if

WTCD 目前不支持 if,但是可以用 ? : 实现。

7.3.1 实现 if then

(condition) ? {
  // Then
} : null

7.3.2 实现 if then else

(condition) ? {
  // Then
} : {
  // Else
}