包含局部变量的 Lua 插件



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

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

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

的问题:我了解"范围",globallocal变量。 但是,如果插件中没有local function,那么所有local变量是否都在所有functions中使用?

对于任何困惑,我深表歉意。 但是我试图弄清楚插件如何在另一个使用其他Lua插件的程序中使用插件。 在声明除非另有说明local function否则local变量仅在该插件文件中使用时,我进行了疯狂的猜测。

我说的对吗?

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

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

还要记住,Lua 中的变量没有类型,它们的值有。

-- declares `a` as a local variable (having no value, i.e. `nil` value)
local a   
-- declares `b` as a local variable having 2 as value
local b = 2  
-- declares `f` as local var having a function as value
local f = function(x) return x * x end  
do
    -- `a`, `b` and `f` are visible here, because this is a block enclosed 
    -- in the block where those vars were declared
    local aa = 2
end
-- `aa` is not visible here, because it was declared in an inner block  

最新更新