mit type () - Funktion, um zu sehen, wenn die aktuelle Zeichenfolge vorhanden ist, die als Tabelle
Ist es möglich zu sehen, wenn eine saite die gleiche wie die Namen einer Tabelle?
Zum Beispiel:
Ich weiß, dass eine Tabelle namens " os " existiert, und ich habe einen string "os"
.
Gibt es dann eine Möglichkeit, dies zu tun:
x="os"
if type(x)=="table" then
print("hurra, the string is a table")
end
Natürlich ist dieses Beispiel nicht funktionieren, wie ich es mir vorstelle, weil
type(x)
wird nur return "string".
Der Grund, warum ich dies tun wollen, eben weil ich wollte, um eine Liste aller vorhandenen Lua-Tabellen, so dass ich dieses Stück code:
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
Wäre ich nicht überrascht, wenn es eine einfachere Methode, um eine Liste aller vorhandenen Tabellen, ich bin nur tun dies zum Spaß in meine Fortschritte des Lernens Lua.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie möchten, Durchlaufen Sie alle globalen Variablen, die Sie verwenden können, eine
for
- Schleife zur Iteration über die_G
Tabelle, die speichert Sie:k
halten wird der name der Variablen, undv
wird, halten Sie den Wert verwenden, so können Sietype(v)
zu prüfen, ob die variable eine Tabelle ist.Zur Beantwortung Ihrer ursprünglichen Frage, können Sie eine Globale variable mit Namen
_G[varName]
. Sotype(_G["os"])
geben"table"
.interjay gab der beste Weg, um tun es tatsächlich. Wenn Sie interessiert sind, obwohl, info auf Ihre ursprüngliche Frage finden Sie in der lua-Handbuch. Im Grunde wollen Sie:
loadstring wird eine Funktion erstellt, mit dem code in der Zeichenfolge. Ausführung f() führt die Funktion, die in diesem Fall nur zurück, was war in den string mystr.