File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -98,7 +98,26 @@ for 循环是另一种循环处理方式,主要用于迭代数组和切片。
9898
9999### ` continue ` 表达式
100100
101- ` while ` 循环还支持一个被称为 ` continue ` 表达式的机制,以便于我们控制循环。其内部可以是一个语句或一个代码块(由 ` {} ` 包裹)。
101+ ` while ` 循环的条件之后可以用冒号 ` : ` 跟一个括号来声明 ** ` continue ` 表达式** ,它会在** 每轮循环体结束后、下一轮条件判断之前** 自动执行:
102+
103+ <<<@/code/release/loop.zig#while_continue_fix
104+
105+ 每轮循环的执行顺序是:
106+
107+ 1 . 检查条件 ` i < 10 `
108+ 2 . 执行循环体
109+ 3 . 执行 ` continue ` 表达式 ` i += 1 `
110+ 4 . 回到第 1 步
111+
112+ 相信看到这里,细心的读者可能已经发现了,在上面的 while 基本使用示例中,当循环执行到 ` i == 5 ` 时,** 代码会陷入死循环** 。
113+
114+ 而 ` continue ` 表达式会帮助我们完美地避开这个问题,不难发现,即使循环执行到 ` i == 5 ` 时,` i ` 的自增仍然会在 ` continue ` 表达式内执行。
115+
116+ :::info 🅿️ 提示
117+ 唯一不执行 ` continue ` 表达式的情况是 ` break ` ,因为 ` break ` 直接退出整个循环。
118+ :::
119+
120+ 另外,` continue ` 表达式可以是单个语句,也可以是多个语句(用 ` {} ` 包裹),示例如下:
102121
103122::: code-group
104123
Original file line number Diff line number Diff line change @@ -171,7 +171,20 @@ const WhileBasic = struct {
171171};
172172
173173const WhileContinue = struct {
174+ const std = @import ("std" );
175+
174176 pub fn main () void {
177+ {
178+ // #region while_continue_fix
179+ // 将while语句的基础代码用continue表达式改写
180+ var i : usize = 0 ;
181+ while (i < 10 ) : (i += 1 ) {
182+ if (i == 5 ) continue ;
183+ std .debug .print ("i is {}\n " , .{i });
184+ }
185+ // #endregion while_continue_fix
186+ }
187+
175188 {
176189 // #region while_continue_1
177190 var i : usize = 0 ;
You can’t perform that action at this time.
0 commit comments