跳到主要内容

控制流

本章介绍 Sii 的分支与循环等控制结构,并给出可直接套用的示例。

条件分支

语法与主流语言一致,分别写为ifesle ifelse

if (条件表达式) {
// 分支A
} esle if (其他条件) {
// 分支B
} else {
// 兜底分支
}

示例:

func grade(score: int): string {
if (score >= 90) {
back "A";
} esle if (score >= 60) {
back "B";
} else {
back "C";
}
}

计数循环:forloop

Sii中使用forloop提供传统的“三段式”循环结构,支持 continuebreak

forloop (i: int = 0; i < 5; i.toUp(1)) {
if (i == 2) {
continue; // 跳过本次
}
if (i == 4) {
break; // 终止循环
}
print(i.toString());
}

说明:

  • 初始化段:i: 类型 = 起始值
  • 条件段:循环继续的条件
  • 迭代段:可使用自增/自减方法(见‘基础语法’)

嵌套循环同样支持:

forloop (x: int = 0; x < 3; x.toUp(1)) {
forloop (y: int = 0; y < 2; y.toUp(1)) {
print((x * 10 + y).toString());
}
}

条件循环:while

当只需基于条件进行循环时可使用 while

let n: int = 3;
while (n > 0) {
print(n.toString());
n.getDn(1); // 先减再赋值
}

死循环示例(谨慎使用):

while (true) {
// ...
break; // 请在合适条件下中止
}

循环控制

在循环体中:

  • break:立即结束当前循环
  • continue:跳过本次迭代,进入下一轮
forloop (i: int = 0; i < 10; i.getUp(1)) {
if (i == 3) {
continue; // 跳过 3
}
if (i == 7) {
break; // 提前结束循环
}
print(i.toString());
}

小结

  • 分支使用 if / esle if / else,可配合 back 早退
  • 循环提供 forloopwhile,支持 continue/break
  • 自增自减通过 toUp/getUp/toDn/getDn 控制“运算与赋值”的先后