While 循环 (while)

Zig 的 while 循环由三部分组成:条件、捕获(可选)和继续表达式(可选)。

基本用法

var i: usize = 0;
while (i < 10) {
    std.debug.print("{}
", .{i});
    i += 1;
}

继续表达式 (Continue Expression)

while 循环支持一个“继续表达式”,它在每次循环迭代结束时执行,类似于 C 语言 for 循环的第三部分。

var i: usize = 0;
while (i < 10) : (i += 1) {
    std.debug.print("{}
", .{i});
}

使用 Optionals

while 循环可以处理可选类型(Optionals)。当可选值为非 null 时,循环继续执行,并可以捕获解包后的值。

var i: ?u32 = 10;
while (i) |value| : (i = if (value > 0) value - 1 else null) {
    std.debug.print("{}
", .{value});
}

使用 Error Unions

类似于 Optionals,while 也可以处理错误联合(Error Unions)。

breakcontinue

break 用于提前退出循环,continue 用于跳过当前迭代并执行继续表达式(如果有)。

标签 (Labels)

循环可以被标记,允许从嵌套循环中 breakcontinue 到外层循环。

outer: while (true) {
    while (true) {
        break :outer;
    }
}

inline while

inline while 会在编译时展开循环。这要求循环条件在编译时已知。

另请参阅:

  • For (For 循环)