如果这是一个不正确的问题,请提前道歉。我对Lua很陌生,我不知道该怎么做。我想从函数变量访问存储在表中的变量。据我所知,在构建之前没有自引用表。
一个例子是:
local bigTable = {
a = {
foo = 0,
bar = function(y)
print(foo) --Incorrect
end
}
}在这种情况下,最好的办法是什么?
发布于 2019-11-12 23:57:27
您要做的是首先创建一个表,并将键追加到该表上:
local a = {}
a.foo = 0
a.bar = function()
print(a.foo)
end
local bigTable = {
a = a
}
bigTable.a.bar() -- prints 0发布于 2019-11-13 12:17:42
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方法将被一次又一次地创建,所以缓存它是有意义的;但这是没有意义的,除非周围的代码已经足够快,以至于这个分配会对它的运行时产生明显的影响。
https://stackoverflow.com/questions/58827624
复制相似问题