【问题标题】:Get global environment in lua package在lua包中获取全局环境
【发布时间】:2015-10-12 01:50:24
【问题描述】:

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

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

【问题讨论】:

标签: lua package global


【解决方案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。上述语句中的所有其他参数都将被忽略。

【讨论】:

  • 所以第二个语句需要在加载包文件时传递_G作为参数。对吗?
猜你喜欢
  • 1970-01-01
  • 2020-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-04
  • 2020-07-23
  • 2020-01-09
  • 2022-01-25
相关资源
最近更新 更多