像这样的 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)
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)