循环语句
介绍
Wave语言提供循环语句以处理需要多次执行相同代码的情况。 循环语句用于在满足特定条件时继续执行代码,或重复执行一定次数。
这使得可以不必重复编写相同的逻辑,而是通过简洁明确的代码来表达重复的工作。 Wave支持基于条件的循环和基于次数的循环 ,并提供关键字来控制循环中的执行流程。
本节将解释while和for语句,以及用于控制循环流程的break和continue关键字的使用方法。
while 语句
while语句在给定条件表达式被评估为真(true)时重复执行代码块。
当条件表达式变为假(false)时,循环立即终止。
此方法适用于重复次数不明确,并需满足特定条件的情况。
基本结构
在Wave中while语句的基本结构如下。
while (条件表达式) {
// 要重复执行的代码
}
条件表达式必须评估为bool类型,可以在用花括号{}括起来的代码块中编写一个或多个语句。
示例:输出从0到4
var i :i32 = 0;
while (i < 5) {
println("i是{}。", i);
i = i + 1;
}
在此示例中,变量 i 小于 5 时执行循环。
在每次迭代中输出当前值,将 i 的值增加 1,使条件最终变为假。
for 语句
for 语句适用于重复次数较为明确的情况。
通过一次性定义初始值、条件表达式和增量表达式,可以清晰地表达循环的流程。
因为将循环控制所需的元素集中在一起,所以容易一目了然地了解循环结构。
基本结构
for (初始化; 条件; 递增) {
// 循环的代码
}
Wave 的 for 初始化支持多种形式。
- 隐式
var类型初始化 var/let mut/const声明初始化- 普通表达式初始化(重用现有变量)
示例 1: 隐式类型初始化
for (i :i32 = 1; i <= 5; i += 1) {
println("i = {}", i);
}
示例 2: var / let mut 初始化
for (var i: i32 = 0; i < 3; i += 1) {
println("var i = {}", i);
}
for (let mut j: i32 = 0; j < 3; j += 1) {
println("let mut j = {}", j);
}
示例 3: 基于表达式的初始化(重用现有变量)
var i: i32 = 99;
for (i = 3; i <= 5; i += 1) {
println("i = {}", i);
}
println("after loop: {}", i); // 6
声明式初始化(var, let mut, i :i32 = ...)作为循环范围变量,基于表达式的初始化(i = ...)更新外部变量本身。
嵌套循环
循环语句可以写在另一个循环语句内,这称为嵌套循环。 嵌套循环对于遍历二维数据结构或处理多个条件组合非常有用。
示例: 二重while语句
var i :i32 = 0;
while (i < 3) {
var j :i32 = 0;
while (j < 2) {
println("i={}, j={}", i, j);
j = j + 1;
}
i = i + 1;
}
在这个例子中,每当外部 while 循环运行一次,内部 while 循环将全部执行。
通过这种方式,可以顺序处理 (i, j) 形式的组合。
break 语句
break 语句立即终止循环,并将流转移到该循环之外。
在不再需要继续循环时使用。
示例: 特定值时终 止循环
var i :i32 = 0;
while (true) {
if (i == 5) {
break;
}
println(i);
i = i + 1;
}
在这个例子中,当 i 等于 5 时,break 被执行,结束无限循环。
这样,break 语句在想要独立于循环条件控制循环时很有用。
continue 语句
continue 语句跳过当前循环的剩余代码,直接开始下次循环。
在某些条件下只需省略部分逻辑时使用。
示例: 仅输出偶数
for (var i: i32 = 0; i <= 10; i = i + 1) {
if (i % 2 == 1) {
continue;
}
println(i);
}
在这段代码中,如果 i 是奇数则执行 continue,跳过输出部分。
结果只输出偶数值。
总结
Wave 的循环设计为能够自然表达基于条件和基于次数的重复。
while 语句适合条件为中心的循环,而 for 语句用于循环次数和流程明确的情况。
结合使用 break 和 continue 可以在循环过程中精细控制执行流,从而构建更复杂和灵活的循环逻辑。