在 Zig 中循环整数范围

xpq*_*pqz 5 zig

像这样的 while 循环是在 Zig 中循环整数范围的惯用方法吗?

var i: i32 = 5;
while (i<10): (i+=1) {
    std.debug.print("{}\n", .{i});
}
Run Code Online (Sandbox Code Playgroud)

我首先尝试了类似Python的

for (5..10) |i| {
    // ....
Run Code Online (Sandbox Code Playgroud)

但这行不通。

小智 5

您建议的方式自 0.11.0(下一版本)起有效。在此期间我曾经做过阿里答案的一个版本。

for ([_]u32{0} ** 6) |_, i| {
    std.debug.print("{}\n", .{i});
}
Run Code Online (Sandbox Code Playgroud)


Ali*_*ghi 3

zig 没有整数范围循环的概念,但nektro有一个 hack ,它创建一个随机[]void切片,因此您可以使用for循环进行迭代

const std = @import("std");

fn range(len: usize) []const void {
    return @as([*]void, undefined)[0..len];
}

for (range(10)) |_, i| {
    std.debug.print("{d}\n", .{i});
}
Run Code Online (Sandbox Code Playgroud)