我正在尝试学习Lua语言,为我公司的产品开发插件。 为了帮助我学习(以及 PiL 书籍、参考手册和众多在线资源),当我阅读时,我试图破译我们当前使用的插件。
我注意到的一件事是local
变量列在最顶部,并且没有设置为特定值。 例如:local SendVar
和local EndVar
。
但后来,许多function
和local
var被使用。
的问题:我了解"范围",global
和local
变量。 但是,如果插件中没有local function
,那么所有local
变量是否都在所有functions
中使用?
对于任何困惑,我深表歉意。 但是我试图弄清楚插件如何在另一个使用其他Lua插件的程序中使用插件。 在声明除非另有说明local function
否则local
变量仅在该插件文件中使用时,我进行了疯狂的猜测。
我说的对吗?
在 Lua 中编写 local
语句时,您声明以下标识符将表示局部变量,无论这些语句是否实际初始化变量。
此外,Lua 中的局部变量具有块范围,即它们在定义它们的块和每个封闭的块中可见。例如,块是功能体、then-end
或else-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