首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Lua,表中的局部变量

Lua,表中的局部变量
EN

Stack Overflow用户
提问于 2019-11-12 22:27:06
回答 2查看 745关注 0票数 1

如果这是一个不正确的问题,请提前道歉。我对Lua很陌生,我不知道该怎么做。我想从函数变量访问存储在表中的变量。据我所知,在构建之前没有自引用表。

一个例子是:

代码语言:javascript
复制
local bigTable = {
    a = {
        foo = 0,
        bar = function(y)
        print(foo) --Incorrect
        end
    }
}

在这种情况下,最好的办法是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-11-12 23:57:27

您要做的是首先创建一个表,并将键追加到该表上:

代码语言:javascript
复制
local a = {}
a.foo = 0
a.bar = function()
    print(a.foo)
end
local bigTable = {
    a = a
}

bigTable.a.bar() -- prints 0
票数 1
EN

Stack Overflow用户

发布于 2019-11-13 12:17:42

代码语言:javascript
复制
local bigTable = {
   a = {
      foo = 0,
      bar = function(self, ...)
         print(self.foo)
      end,
   }
}

-- Somewhere else in the code...

bigTable.a.bar(bigTable.a) --> 0
-- or the shorter but (almost) equivalent form:
bigTable.a:bar() --> prints 0

我预计您的下一个问题将是“:是做什么的?”,为此已经有了lots of answers :)

请注意,这里有提高性能的潜力:如果上面的代码被多次调用,bar方法将被一次又一次地创建,所以缓存它是有意义的;但这是没有意义的,除非周围的代码已经足够快,以至于这个分配会对它的运行时产生明显的影响。

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

https://stackoverflow.com/questions/58827624

复制
相关文章

相似问题

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