Ziglings 笔记 11: While 循环基础
重复的力量
在掌握了变量和判断之后,Ziglings 的第 11 个练习带我进入了循环 (Loops) 的领域。计算机最擅长的事情就是不知疲倦地重复工作,而 while 是实现这一点的最基本工具。
挑战:指数增长
任务要求我们打印出 2 的幂次方(2, 4, 8…),直到数字达到 1024 为止。我们需要填写正确的循环条件。
解决方案
这是我的代码实现:
const std = @import("std");
pub fn main() void {
var n: u32 = 2;
// 循环条件:只要 n 小于 1024 就继续执行
while (n < 1024) {
// 打印当前数字
std.debug.print("{} ", .{n});
// 将 n 翻倍
n *= 2;
}
// 循环结束后打印最终结果
std.debug.print("n={}\n", .{n});
}
核心知识点总结
1. while 的纯粹性
Zig 的 while 循环非常标准:先检查条件,如果为真则执行块内代码,然后再回过头检查条件。
有趣的是,Zig 没有传统的 C 风格 for (int i=0; i<n; i++) 循环。在 Zig 中,这种逻辑通常用 while 或者特定的迭代器 for 来实现。
2. 严格的布尔检查
再次强调,Zig 不允许模糊的条件判断。
- ❌
while (n) ...// 编译错误 - ✅
while (n > 0) ...// 正确
3. 可以在任何地方声明变量
虽然这个练习没用到,但我了解到 Zig 的 while 实际上支持更高级的功能,比如 while (iter.next()) |item| { ... },这允许在条件判断的同时捕获值,处理 Optional 类型非常方便(这在后续练习中应该会遇到)。
后续预告:基本的循环搞定了,但如果我想在循环中间跳过某次执行,或者提前退出循环该怎么办?下一篇我们将学习 continue 和 break。