编译时基础 (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;

另请参阅: