在 Lua 3.2(.1) 中访问全局表?

我目前正在使用一个早于 2000 年的版本的 Lua,因为我正在撰写脚本的程序是用那个时候制作的。我使用的版本是 3.2.1。

我想要遍历全局环境中的所有元素,但是我还没有找到如何实现的方法。如果有人能告诉我在那个版本的 Lua 中是否可能以及如何实现,我将不胜感激。在那个版本中,_G 是一个空值,我无法从全局获取表的 getglobal(name)。

我没有在 https://www.lua.org/manual/3.2/manual.html 上找到关于全局环境遍历的任何信息,可能是因为我读得太急或者它根本不存在。

感谢任何能帮助我的回复!

点赞
用户107090
用户107090

使用nextvar来遍历所有全局变量。在手册中查找它。另见

以下是一些打印所有全局变量的示例代码:

function allvars()
    local k,v=nil
    while 1 do
        k,v=nextvar(k)
        if k==nil then return end
        print(k,v)
    end
end

allvars()

nextvar从Lua 1.1到3.2一直存在。当全局变量成为普通表中的条目并且可以使用next遍历时,它在4.0中被删除。

2018-03-15 01:07:19