mit der Funktion type (), um festzustellen, ob die aktuelle Zeichenfolge als Tabelle existiert

8

Ist es möglich zu sehen, ob eine Zeichenfolge mit dem Namen einer Tabelle übereinstimmt?

Zum Beispiel: Ich weiß, dass eine Tabelle namens "os" existiert, und ich habe eine Zeichenfolge "os" . Gibt es dann einen Weg, dies zu tun:

%Vor%

Natürlich wird dieses Beispiel nicht so funktionieren, wie ich es möchte, weil

%Vor%

gibt nur "string" zurück.

Der Grund, warum ich das machen möchte, ist, nur weil ich alle existierenden Lua-Tabellen auflisten wollte, also habe ich diesen Code gemacht:

%Vor%

Ich wäre nicht überrascht, wenn es eine einfachere Methode gibt, alle vorhandenen Tabellen aufzulisten. Ich mache das nur aus Spaß, um Lua zu lernen.

    
Michelrandahl 09.03.2011, 18:26
quelle

2 Antworten

14

Wenn Sie über alle globalen Variablen iterieren möchten, können Sie eine for -Schleife verwenden, um über die _G -Tabelle zu iterieren, in der sie gespeichert sind:

%Vor%

k enthält den Variablennamen und v enthält den Wert. Daher können Sie mit type(v) überprüfen, ob die Variable eine Tabelle ist.

Um Ihre ursprüngliche Frage zu beantworten, können Sie eine globale Variable namentlich mit _G[varName] erhalten. So wird type(_G["os"]) "table" geben.

    
interjay 09.03.2011, 18:38
quelle
3

interjay gab den besten Weg, es tatsächlich zu tun. Wenn Sie interessiert sind, finden Sie Informationen zu Ihrer ursprünglichen Frage im lua-Handbuch . Grundsätzlich möchten Sie:

%Vor%

Ladestring erstellt eine Funktion, die den Code in der Zeichenfolge enthält. Das Ausführen von f () führt diese Funktion aus, die in diesem Fall nur das zurückgibt, was in der Zeichenfolge mystr.

war     
usul 14.03.2011 03:43
quelle

Tags und Links