在lua包中获取全局环境

时间:2015-10-11 12:25:42

标签: lua package global

在某些lua包文件的开头,有时会有一行local base = _Glocal base = ...

  1. 这样做有什么好处?
  2. 这两行之间的区别是什么?

1 个答案:

答案 0 :(得分:1)

对于第一个问题,您可以参考:Why make global Lua functions local?

对于你的第二个,

  

这两行之间的区别是什么?

执行local base = _G时,您将base指定为全局环境表的同义词。另一方面,在声明local base = ...; ...引用了lua的vararg feature

可以通过以下示例更详细地显示:

local a = {...}
for k, v in pairs(a) do print(k, v) end

然后按如下方式执行:

─$ lua temp.lua some thing is passed "here within quotes"
1       some
2       thing
3       is
4       passed
5       here within quotes

如您所见,...只是传递给程序的参数列表。现在,当你有

local base = ...

lua将第一个参数赋给变量base。上述声明中将忽略所有其他参数。