【发布时间】:2013-03-23 17:40:30
【问题描述】:
我在测试 Lua 的作用域时发现了一些意想不到的东西。以下代码不打印 localMainVariable。
function functionScope()
print( "\nIn function")
print( "globalMainVariable: " .. globalMainVariable )
if (localMainVariable ~= nil) then print( "localMainVariable: " .. localMainVariable ) end
end
globalMainVariable = "Visible"
local localMainVariable = "Visible"
functionScope()
但下面的代码确实会打印 localMainVariable。
globalMainVariable = "Visible"
local localMainVariable = "Visible"
function functionScope()
print( "\nIn function")
print( "globalMainVariable: " .. globalMainVariable )
if (localMainVariable ~= nil) then print( "localMainVariable: " .. localMainVariable ) end
end
functionScope()
我知道这与声明 localMainVariable 的位置有关,但我认为将其设为本地会限制变量的范围。实际的规则是什么?
谢谢
【问题讨论】:
-
只是提到,在第二个示例中,
localMainVariable被称为functionScope函数的 upvalue。