Lua中的范围规则
我正在测试Lua的范围,发现了一些意想不到的事情。以下代码不打印LocalMain变量Lua中的范围规则,lua,scope,Lua,Scope,我正在测试Lua的范围,发现了一些意想不到的事情。以下代码不打印LocalMain变量 function functionScope() print( "\nIn function") print( "globalMainVariable: " .. globalMainVariable ) if (localMainVariable ~= nil) then print( "localMainVariable: " .. localMainVariable ) end
function functionScope()
print( "\nIn function")
print( "globalMainVariable: " .. globalMainVariable )
if (localMainVariable ~= nil) then print( "localMainVariable: " .. localMainVariable ) end
end
globalMainVariable = "Visible"
local localMainVariable = "Visible"
functionScope()
globalMainVariable = "Visible"
local localMainVariable = "Visible"
function functionScope()
print( "\nIn function")
print( "globalMainVariable: " .. globalMainVariable )
if (localMainVariable ~= nil) then print( "localMainVariable: " .. localMainVariable ) end
end
functionScope()
但是下面的代码不打印localmain变量
function functionScope()
print( "\nIn function")
print( "globalMainVariable: " .. globalMainVariable )
if (localMainVariable ~= nil) then print( "localMainVariable: " .. localMainVariable ) end
end
globalMainVariable = "Visible"
local localMainVariable = "Visible"
functionScope()
globalMainVariable = "Visible"
local localMainVariable = "Visible"
function functionScope()
print( "\nIn function")
print( "globalMainVariable: " .. globalMainVariable )
if (localMainVariable ~= nil) then print( "localMainVariable: " .. localMainVariable ) end
end
functionScope()
我知道这与LocalMain变量的声明位置有关,但我认为将其设置为本地会限制变量的范围。实际规则是什么
谢谢
局部变量的作用域从其后的第一个语句开始
声明,并持续到
包含声明的最内层块
刚刚提到的是,在第二个示例中,
localmain变量
被称为functionScope
函数的upvalue。