【Lua】大G表
Lua大G表
_G表是一个保存了所有已经运行了的全局变量,它是全局环境表
_G自身也会被存入_G表中,所以_G._G == _G --> true
_G._G._G._G == _G --> true
如果你用了 setfenv() 或 _ENV 可能会影响 _G 的使用范围(Lua 5.2+ 以后 _ENV 替代了 _G)
-- 例子:判断_G里是否有print函数这种方法
if type(_G["print"]) == "function" thenprint("全局变量中有定义了print")
end
-- 例子:检查脚本是否调用了print()函数
local old_print = print --将old_print指向当前的print
local print_used = false --这是一个用于判断print是否被使用过的标识-- 让print这个引用指向一个新的函数,旧的print函数此时被old_print指着
print = function ()print_used = trueold_print()
end-- 调用
print("Hello!")-- 判断是否使用了print
if print_used thenold_print("本脚本中使用了print函数")
end
-- 例子:打印_G表中所有的全局变量及其指向的内容
-- _G表内包括了
-- 1. 所有的全局变量,没有用local修饰的变量
-- 2. Lua内建的全局函数:如_G["print"] -->打印函数
-- 3. 标准库模块
-- 4. _G自己,即_G["_G"] == _G --> truefor i,v in pairs(_G)
doprint("全局变量",i,"指向了"..tostring(v))
end