Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Lua,表中的局部变量_Lua - Fatal编程技术网

Lua,表中的局部变量

Lua,表中的局部变量,lua,Lua,如果这是一个错误的问题,请提前道歉。我是Lua的新手,不知道该怎么做。我想从函数变量访问存储在表中的变量。 据我所知,在构建之前没有自引用表 例如: local bigTable = { a = { foo = 0, bar = function(y) print(foo) --Incorrect end } } 对于这种情况,最好的方法是什么?您要做的是首先创建一个表,然后将键附加到表中: local a = {

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

例如:

local bigTable = {
    a = {
        foo = 0,
        bar = function(y)
        print(foo) --Incorrect
        end
    }
}

对于这种情况,最好的方法是什么?

您要做的是首先创建一个表,然后将键附加到表中:

local a = {}
a.foo = 0
a.bar = function()
    print(a.foo)
end
local bigTable = {
    a = a
}

bigTable.a.bar() -- prints 0
localbigtable={
a={
foo=0,
bar=功能(自…)
打印(self.foo)
完,,
}
}
--代码中的其他地方。。。
bigTable.a.bar(bigTable.a)-->0
--或更短但(几乎)等效的形式:
bigTable.a:bar()-->打印0
我预计你的下一个问题将是“这个
做了什么?”,关于这个问题,已经有了:)



注意,这里有可能提高性能:如果上面的代码被多次调用,那么
bar
方法将被一次又一次地创建,因此缓存它是有意义的;但是这是毫无意义的,除非周围的代码已经足够快,这一分配将对其运行时产生明显的影响。

Define
function bigTable.a.bar(y)print(bigTable.a.foo)end
bigTable
定义之后的下一个语句中。
bar=function bigTable.a:bar(…)
引发语法错误啊,对不起,那是因为我最初编写的代码不同,然后在没有重复检查的情况下移动了内容。现在修复它;)新版本的
bar=bar(self,…)
也会出现语法错误啊,是的,我只是个哑巴。现在它可以工作了,谢谢你指出:)