在 lua 包中获取全局环境

Get global environment in lua package

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

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

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

对于你的第二个,

What's the differences between these two lines?

当您执行 local base = _G 时,您将 base 指定为全局环境 table 的同义词。另一方面,在语句 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。上述语句中将忽略所有其他参数。