【发布时间】:2015-10-12 01:50:24
【问题描述】:
在一些lua包文件的开头,有时会有local base = _G或local base = ...这行。
- 这样做有什么好处?
- 这两行有什么区别?
【问题讨论】:
-
@hjpotter92 但是第二个问题呢?
-
local base = ...表示变量base(全局表?)的值预计将出现在此脚本的第一个参数中
在一些lua包文件的开头,有时会有local base = _G或local base = ...这行。
【问题讨论】:
local base = ... 表示变量base(全局表?)的值预计将出现在此脚本的第一个参数中
第一个问题可以参考: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。上述语句中的所有其他参数都将被忽略。
【讨论】:
_G作为参数。对吗?