在 lua 包中获取全局环境
Get global environment in lua package
在某些lua包文件的开头,有时会有local base = _G
或local base = ...
.
行
- 这样做有什么好处?
- 这两行有什么区别?
第一个问题可以参考: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
。上述语句中将忽略所有其他参数。
在某些lua包文件的开头,有时会有local base = _G
或local base = ...
.
- 这样做有什么好处?
- 这两行有什么区别?
第一个问题可以参考: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
。上述语句中将忽略所有其他参数。