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
}