首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Zig中的全局` `comptime var`

Zig中的全局` `comptime var`
EN

Stack Overflow用户
提问于 2021-07-28 13:48:21
回答 1查看 78关注 0票数 0

在Zig中,我可以毫无问题地做到这一点:

代码语言:javascript
复制
fn foo() void {
    comptime var num: comptime_int = 0;
    num += 1;
}

但是当我试图在函数外部声明变量时,我得到了一个编译错误:

代码语言:javascript
复制
comptime var num: comptime_int = 0;

fn foo() void {
    num += 1;
}

fn bar() void {
    num += 2;
}
代码语言:javascript
复制
error: expected block or field, found 'var'

Zig版本: 0.9.0-dev.453+7ef854682

EN

回答 1

Stack Overflow用户

发布于 2021-07-28 13:48:21

使用zorrow中使用的方法。它在一个函数中定义变量(一个块也可以),然后返回一个带有访问它的函数的结构。

您可以创建定义getset函数的结构:

代码语言:javascript
复制
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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68555025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档