我创建了很多字符串变量名,我想将这些名称用作表名,即:
sName1 = "test"
sName2 = "test2"
tsName1 ={} -- would like this to be ttest ={}
tsName2 ={} -- ttest2 = {}
我不知道如何让它工作,经历了 [] 和 .'s 的各种组合,但在运行时我总是遇到索引错误,任何帮助将不胜感激。
我创建了很多字符串变量名,我想将这些名称用作表名,即:
sName1 = "test"
sName2 = "test2"
tsName1 ={} -- would like this to be ttest ={}
tsName2 ={} -- ttest2 = {}
我不知道如何让它工作,经历了 [] 和 .'s 的各种组合,但在运行时我总是遇到索引错误,任何帮助将不胜感激。
除了使用之外_G
,正如 Mike 建议的那样,您可以简单地将所有这些表放在另一个表中:
tables = { }
tables[sName1] = { }
虽然_G
几乎每个表都以相同的方式工作,但除了极少数情况外,污染全局“命名空间”并没有多大用处,而且使用常规表会好得多。
你的问题有点含糊,但我假设你想制作基于字符串变量命名的表。一种方法是将它们动态创建为全局对象,如下所示:
local sName1 = "test"
-- this creates a name for the new table, and creates it as a global object
local tblName = "t".. sName1
_G[tblName] = {}
-- get a reference to the table and put something in it.
local ttest = _G[tblName]
table.insert(ttest, "asdf")
-- this just shows that you can modify the global object using just the reference
print(_G[tblName][1])