Lua中的范围规则

时间:2013-03-23 17:40:30

标签: lua scope

我正在测试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的位置有关,但我认为将其设置为local会限制变量的范围。什么是实际规则?

由于

1 个答案:

答案 0 :(得分:5)

  

局部变量的范围从其后的第一个语句开始   声明并持续到最后的非空白声明   包含声明的最里面的块。

Lua manual