Skip to main content

3.1 Control flow

脚本按语句顺序执行,使用条件分支选择路径,用断言检查输入,通过 return、throw 或 exit 结束执行。

var 与 run​

var name = value 定义或重新绑定变量;run value 执行表达式并忽略返回值,适合调用产生副作用的函数。

var total = 10 + 20;
var total = total + 5;
run total;
return total;

return、throw 与 exit​

语句行为
return value返回当前函数的结果;顶层使用时结束查询
throw value抛出异常,停止查询
exit value直接结束整个查询,包括外层函数

三者均可在值前指定整数状态码,例如 return 200, value,未指定时为 0。状态码属于查询结果,不直接表示 HTTP 状态。

var check = (value) -> {
if (value < 0) {
throw 400, "value must be non-negative";
}
return value * 2;
};
return check(3);
var stop = () -> {
exit 10, "stopped";
};
run stop();
return "unreachable";

if 与 else​

分支按顺序判断,可使用多个 else if 和一个 else。

var score = 85;
if (score >= 90) {
return "A";
} else if (score >= 60) {
return "B";
} else {
return "C";
}

建议条件表达式返回布尔值,并完整书写花括号。语言未提供 for、while 和 switch 语句;集合遍历可使用结果转换和函数。

assert​

assert expression 要求表达式结果为布尔值 true。结果为 false 或非布尔类型时抛出异常,停止查询。

var quantity = 2;
assert quantity > 0;
return quantity * 10;

See Variables and assignment and Script structure.