是否可以查看字符串是否与表名相同?
例如:我知道存在一个名为'os'的表,我有一个字符串"os".那么有办法做到这一点:
x="os"
if type(x)=="table" then
print("hurra, the string is a table")
end
Run Code Online (Sandbox Code Playgroud)
当然这个例子不会像我想要的那样工作,因为
type(x)
Run Code Online (Sandbox Code Playgroud)
只会返回"字符串".
我想要这样做的原因只是因为我想列出所有现有的Lua表,所以我做了这段代码:
alphabetStart=97
alphabetEnd=122
function findAllTables(currString, length)
if type(allTables)=="nil" then
allTables={}
end
if type(currString)=="table" then
allTables[#allTables+1]=currString
end
if #currString < length then
for i=alphabetStart, alphabetEnd do
findAllTables(currString..string.char(i), length)
end
end
end
findAllTables("", 2)
for i in pairs(allTables) do
print(i)
end
Run Code Online (Sandbox Code Playgroud)
如果有一个更简单的方法来列出所有现有表格,我不会感到惊讶,我只是为了学习Lua的过程中的乐趣.
int*_*jay 17
如果要迭代所有全局变量,可以使用for循环迭代_G存储它们的表:
for k,v in pairs(_G) do
print (k,v)
end
Run Code Online (Sandbox Code Playgroud)
k将保存变量名称,并v保存该值,以便您可以type(v)用来检查变量是否为表.
要回答原始问题,可以使用名称获取全局变量_G[varName].所以type(_G["os"])会给"table".