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)。
break 和 continue
break 用于提前退出循环,continue 用于跳过当前迭代并执行继续表达式(如果有)。
标签 (Labels)
循环可以被标记,允许从嵌套循环中 break 或 continue 到外层循环。
outer: while (true) {
while (true) {
break :outer;
}
}
inline while
inline while 会在编译时展开循环。这要求循环条件在编译时已知。
另请参阅:
- For (For 循环)