Как преобразовать строку в таблицу - PullRequest
2 голосов
/ 01 ноября 2011

Например, я загрузил модуль, и в этом модуле есть таблица с именем «Table1». В главном файле у меня есть таблица, которую я хочу быть точно такой же копией «Table1». Так как я могу это сделать, если у меня есть только имя этой таблицы. Когда я пытаюсь сделать это так

str = "Table1"  
t = str

Я, очевидно, получаю строку вместо таблицы, так как я могу получить содержимое таблицы, такое содержимое таблицы? То, что я хочу, это как-то сделать эту строку кода

t = 'Table1'

быть эквивалентным этому

t = Table1

Ответы [ 2 ]

2 голосов
/ 01 ноября 2011

Таблицы в Lua - очень гибкий и важный тип данных.Настолько, что даже модули являются таблицами.Если вы знаете, что в модуле есть таблица с заданным именем, и у вас есть ее имя в переменной, просто используйте оператор [], чтобы получить таблицу:

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

require 'mymodule'
t = mymodule[tablename]

Однако этоЭто не очень хороший подход, поскольку он предполагает, что вы «знаете», что модуль содержит таблицу с заданным именем.Вы всегда можете разработать модули, которые будут экспортировать таблицу под заданным стандартным именем (которое не изменяется):

require 'mymodule'
t = mymodule.Table1 -- equivalent to mymodule['Table1']
2 голосов
/ 01 ноября 2011

Если str - имя глобальной переменной, используйте _G[str], чтобы получить ее значение.

...