[英]Global `comptime var` in Zig
在 Zig 中,我可以毫無問題地做到這一點:
fn foo() void {
comptime var num: comptime_int = 0;
num += 1;
}
但是當我嘗試在函數外聲明變量時,我得到一個編譯錯誤:
comptime var num: comptime_int = 0;
fn foo() void {
num += 1;
}
fn bar() void {
num += 2;
}
error: expected block or field, found 'var'
Zig 版本:0.9.0-dev.453+7ef854682
使用zorrow 中使用的方法。 它在一個函數中定義變量(一個塊也可以),然后它返回一個帶有訪問它的函數的結構。
您可以創建一個定義get
和set
函數的結構:
const num = block_name: {
comptime var self: comptime_int = 0;
const result = struct {
fn get() comptime_int {
return self;
}
fn increment(amount: comptime_int) void {
self += amount;
}
};
break :block_name result;
};
fn foo() void {
num.increment(1);
}
fn bar() void {
num.increment(2);
}
將來,您將可以使用帶有指向可變值的指針的const
,編譯器將不再允許使用上述方法: https : //github.com/ziglang/zig/issues/7396
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.