编译时基础 (Basics At Compile-Time)
Zig 允许在编译时运行代码。这是 Zig 元编程能力的核心。
comptime 关键字
使用 comptime 关键字可以强制代码在编译时执行。
const x = comptime fibonacci(10);
fn fibonacci(n: i32) i32 {
if (n <= 1) return n;
return fibonacci(n - 1) + fibonacci(n - 2);
}
在上面的例子中,fibonacci(10) 是在编译时计算的,结果直接嵌入到编译后的二进制文件中。
编译时变量
可以在 comptime 块中声明变量,这些变量在编译期间是可变的,但在运行时是常量的。
test "comptime var" {
var x: i32 = 1;
comptime {
x += 1;
}
try std.testing.expect(x == 2);
}
编译时表达式
如果表达式的值在编译时是已知的,它可以用于需要编译时常量的上下文(例如数组长度)。
const array_len = 10 + 5;
var array: [array_len]i32 = undefined;