包含本地变量的Lua插件

我正在尝试学习Lua语言,以便为我公司的产品开发插件。为了帮助我学习(除了PiL书、参考手册和众多在线资源),当我阅读时,我试着破译我们使用的当前插件。

我注意到的一件事是,local变量列在最上面,并没有设置一个特定的值。例如:local SendVarlocal EndVar

但是后来,许多functionlocal var都被使用了。

我的问题是:我理解"作用域"、globallocal变量。但是,如果插件中没有local function所有local变量都在所有functions中使用吗?

我很抱歉可能会有一些混淆。但是我正在尝试弄清楚插件如何在使用其他Lua插件的程序中使用。我猜测,除非明确说明了local function,否则所有local变量都只在该插件文件中使用。

我正确吗?

点赞
用户2633423
用户2633423

当你在 Lua 中写一个 local 语句时,你声明以下标识符将表示局部变量,无论这些语句是否实际初始化了变量。

此外,Lua 中的局部变量具有块范围,即它们在定义的块以及每个封闭块中都可见。例如,块是函数体、then-endelse-end 块、do-end 块等等。

另外需要记住的是,在 Lua 中变量没有类型,它们的值有类型。

-- 将 `a` 声明为局部变量(没有值,即 `nil` 值)
local a
-- 将 `b` 声明为局部变量,其值为 2
local b = 2
-- 将 `f` 声明为局部变量,其值为一个函数
local f = function(x) return x * x end

do
    -- `a`、`b` 和 `f` 在这里可见,因为这是被封闭的块
    -- 在这个块中声明了这些变量

    local aa = 2

end

-- `aa` 在这里不可见,因为它在一个内部块中声明
2013-09-17 19:47:43