获取 Lua 包中全局环境。

在某些 Lua 包文件的开头,有时会出现 local base = _Glocal base = ... 这样的语句。

  1. 这样做有什么好处呢?
  2. 这两个语句之间有什么区别?
点赞
用户1190388
用户1190388

关于第一个问题,你可以参考:为什么要将全局 Lua 函数变为本地函数?

至于你的第二个问题,

这两行代码有什么不同?

当你执行 local base = _G 时,你将为全局环境表分配一个同义词 base。另一方面,在语句 local base = ... 中,... 是指 vararg 特性

以下示例可以更详细地说明:

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。以上语句中的所有其他参数都将被忽略。

2015-10-11 17:50:24