如果我理解正确,您是说要基于变量的名称来访问变量吗?我认为您正在寻找的是全局变量_G。
回想一下,您可以在表中将字符串作为键。将_G视为一个巨大的表,其中您创建的每个表或变量都只是值的键。
Column1 = {"A","B"}
string1 = "Column".."1" --concatenate column and 1. You might switch out the 1 for a variable. If you use a variable,make sure to use tostring,like so:
var = 1
string2 = "Column"..tostring(var) --becomes "Column1"
print(_G[string2]) --prints the location of the table. You can index it like any other table,like so:
print(_G[string2][1]) --prints the 1st item of the table. (A)
因此,如果要遍历5个名为Column1,Column2等的表,则可以使用for循环创建字符串,然后访问该字符串。
C1 = {"A"} --I shorted the names to just C for ease of typing this example.
C2 = {"B"}
C3 = {"C"}
C4 = {"D"}
C5 = {"E"}
for i=1,5 do
local v = "C"..tostring(i)
print(_G[v][1])
end
输出
A
B
C
D
E
编辑:我是傻瓜,我把一切都弄复杂了。有一个更简单的解决方案。如果您只想访问循环中的列而不是在某些点访问单个列,那么这里更简单的解决方案可能是将所有列放入一个更大的表中,然后对其进行索引。
columns = {{"A","1"},{"B","R"}} --each anonymous table is a column. If it has a key attached to it like "column1 = {"A"}" it can't be numerically iterated over.
--You could also insert on the fly.
column3 = {"C"}
table.insert(columns,column3)
for i,v in ipairs(columns) do
print(i,v[1]) --I is the index and v is the table. This will print which column you're on,and get the 1st item in the table.
end
输出:
1 A
2 B
3 C
致将来的读者:如果您想要一个通用的解决方案,以按名称获取表作为字符串,那么使用_G的第一个解决方案就是您想要的。如果遇到类似询问者的情况,第二种解决方案应该没问题。
本文链接:https://www.f2er.com/2875993.html