Lua:通过表格进行变量赋值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Lua:通过表格进行变量赋值相关的知识,希望对你有一定的参考价值。
目前我正在尝试导出并重新导入LUA中的一些变量。想象一张桌子AllGlobals
。该表包含我脚本中使用的所有全局变量,而key
包含变量名称和value
- surprise - 包含变量值。
我的脚本现在应该做的是重新分配变量。我开始考虑以下解决方案,这显然不起作用:
1 function InsertGlobals()
2 for key,value in pairs(AllGlobals) do
3 key = value
4 end
5 end
那么:有没有人知道将第3行中的值赋给key中包含的变量名的解决方案,而不是将其插入变量键本身?
答案
解决我自己的问题:
function InsertGlobals()
for key,value in pairs(AllGlobals) do
_G[key]=value
end
end
另一答案
您只是进行浅层迭代 - 您不会在表格中横切表格。例如,表输入不会像_G.examp.newfunc()那样将examp.newfunc()放入_G中。另外,重复_G,包和_ENV的引用是不明智的,除非你真的知道你在做什么,这意味着有目的。
function InsertGlobals(input)
for key, value in pairs(input) do
if(key ~= "_G" or key ~= "package" or key ~= "_ENV")then
_G[key] = value
end
end
end
要修复浅迭代,您需要做的只是一点递归。我相信你不会用这个来砸你的筹码,但如果你离开_G,打包和_ENV那么你肯定会。
function InsertGlobals(input)
for key, value in pairs(input) do
if(key ~= "_G" or key ~= "package" or key ~= "_ENV")then
if(type(value) ~= "table")then
_G[key] = value
else
InsertGlobals(value)
end
end
end
end
以上是关于Lua:通过表格进行变量赋值的主要内容,如果未能解决你的问题,请参考以下文章