2011-11-01 4 views
2

Par exemple j'ai chargé un module, et il y a une table dans ce module avec le nom "Table1". Dans le fichier principal, j'ai une table que je veux être exactement la même copie de "Table1". Alors, comment puis-je le faire, si je n'ai qu'un nom de cette table. Quand je suis en train de le faire comme çaComment convertir une chaîne en une table

str = "Table1" 
t = str 

je reçois évidemment une chaîne au lieu de la table, alors comment puis-je obtenir un contenu de table de contenu de table? Ce que je veux est de pouvoir faire en quelque sorte cette ligne de code

t = 'Table1' 

être equvalent à celui-ci

t = Table1 

Répondre

2

Si str est le nom d'une variable globale, utilisez _G[str] pour obtenir sa valeur.

2

Les tables dans Lua sont un type de données très flexible et important. Tellement, que même les modules sont des tables. Si vous le savez, qu'il ya une table par un nom donné dans le module, et vous avez son nom dans une variable, il suffit d'utiliser l'opérateur [] pour obtenir la table:

tablename = 'Table1' -- you get this from somewhere, assuming it's not fixed 

require 'mymodule' 
t = mymodule[tablename] 

Cependant, ce n'est pas très bonne approche, car elle suppose que vous "savez" que le module contient une table par le nom donné. Vous pouvez toujours concevoir des modules qui exporteront la table par un nom standard donné (qui ne change pas):

require 'mymodule' 
t = mymodule.Table1 -- equivalent to mymodule['Table1'] 
Questions connexes