【问题标题】:Scoping rules in LuaLua 中的范围规则
【发布时间】: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

标签: lua scope


【解决方案1】:

局部变量的作用域从其后的第一条语句开始 声明并持续到最后一个非无效声明 包含声明的最里面的块。

Lua manual

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 2015-06-02
    • 1970-01-01
    • 1970-01-01
    • 2015-08-15
    • 1970-01-01
    相关资源
    最近更新 更多