Max*_*and 5 c++ lua global-variables lua-5.2
我一直在寻找相当长的一段时间,我还没有找到从C++中获取所有全局变量的方法.考虑一下这个小的Lua测试脚本.
myGlobal1 = "Global 1"
myGlobal2 = 2
function test()
local l1=0
print (myGlobal1,myGlobal2,l1)
end
test()
Run Code Online (Sandbox Code Playgroud)
假设您在print (myGlobal1,myGlobal2,l1)
C++ 处暂停执行并获取所有全局变量(myGlobal1
和myGlobal2
).这些示例是任意的,从C++的角度来看,全局变量是未知的.
我一直在看,lua_getglobal()
但后来我需要先知道变量的名称.我看了看lua_getupvalue()
但只得到了" _ENV
"结果.
我想我可以lua_getglobal()
尽快知道它们的名称,但是我如何得到全局变量列表(来自C++)?我确实有这个lua_Debug
结构(如果有任何帮助)
编辑 这篇文章最初并不是关于迭代表,它是关于如何找到用户自己的全局变量.
但是,我发布了一个解决方案,可以在这里完成.
好的,我解决了.
lua_pushglobaltable(L); // Get global table
lua_pushnil(L); // put a nil key on stack
while (lua_next(L,-2) != 0) { // key(-1) is replaced by the next key(-1) in table(-2)
name = lua_tostring(L,-2); // Get key(-2) name
lua_pop(L,1); // remove value(-1), now key on top at(-1)
}
lua_pop(L,1); // remove global table(-1)
Run Code Online (Sandbox Code Playgroud)
当lua_next()
找不到更多条目时,弹出密钥名称,将表保留在顶部(-1).
接下来的问题是将我自己的全局变量与其余的表条目区分开来......
归档时间: |
|
查看次数: |
4602 次 |
最近记录: |