Lua 需要在本地表中声明本地函数或变量吗?

Lua 需要在本地表中声明本地函数或变量吗?,lua,Lua,如果我有 local table={} table.variableA=1 -- this is local? local table2= { local variable2=2 -- this is the same that above? } 当我在本地表中声明函数时,它们都是本地函数?是,但不是。 函数不是局部的,它们只是值。变量是局部变量还是非局部变量。例如,想象一下: function foo_global() print 'foo' end local foo_loc

如果我有

local table={}

table.variableA=1 -- this is local?


local table2=
{
    local variable2=2 -- this is the same that above?
}
当我在本地表中声明函数时,它们都是本地函数?

是,但不是。 函数不是局部的,它们只是值。变量是局部变量还是非局部变量。例如,想象一下:

function foo_global() print 'foo' end
local foo_local = foo_global
有两个变量,一个全局变量和一个局部变量,它们都包含相同的函数值

将函数存储到表中时,它既不是全局函数,也不是局部函数,因为它不是变量。该表可以存储在局部变量中,但这并不真正影响函数本身,只影响您可以从中访问它的位置


在表构造函数内部,即在大括号
{
}
之间,不能使用
local
关键字,因为在那里没有意义。

这不是正确使用
local
关键字。错误:
8:靠近“local”的意外符号
表中的任何变量(或表、函数)都是其元素,仅此而已。但是没有local关键字的局部函数中的变量是全局的…不是全局的,也不是局部的-仅表的元素。。元素没有可视区域,它们只有一个在表中存在的索引和一个在本地表中的函数中的变量?函数是局部函数,因为它位于表内,变量?与不带表的变量?相同。函数中的变量是局部变量,只要它们声明为局部变量,否则它们在调用环境函数时是全局变量。函数是表的一个元素这一事实不会改变任何事情。