For 循环 (for)
Zig 的 for 循环用于遍历数组、切片、元组等可迭代对象。
基本用法
const items = [_]i32{ 4, 5, 3, 4, 0 };
var sum: i32 = 0;
for (items) |value| {
sum += value;
}
获取索引
如果需要索引,可以添加第二个捕获变量。
for (items, 0..) |value, index| {
std.debug.print("Item {} is \n", .{index, value});
}
修改元素
要修改元素,必须捕获指针。
var items = [_]i32{ 1, 2, 3 };
for (&items) |*value| {
value.* += 1;
}
多重迭代
for 循环可以同时遍历多个切片,只要它们的长度相同。
const items1 = [_]usize{ 1, 2, 3 };
const items2 = [_]usize{ 4, 5, 6 };
var sum: usize = 0;
for (items1, items2) |i, j| {
sum += i + j;
}
标签 (Labels)
与 while 循环一样,for 循环也可以使用标签。
inline for
inline for 会在编译时展开循环。这对于类型元编程非常有用。
const types = [_]type{ i32, f32, u8 };
inline for (types) |T| {
var x: T = 0;
_ = x;
}
另请参阅: