Lua: Создайте таблицу из ранее установленной переменной
Вопрос
Я получаю информацию о сборе данных с веб-сайта, и одна из вещей, которые я должен сделать,-это изменить часть информации из того, что страница дает мне в другую информацию, и превратить эту вторую часть информации в переменную. Однако я просто не могу найти способ сделать это.
Учитывая таблицу ниже:
t = {big = "tall", little = "short", fat = "wide", skinny = "thin"}
... как я могу сделать это, когда я это сделаю:
adj = string.match(page,'Adjective: (%w+)')
... и это соответствует big
, Я могу вернуть значение tall
Но превратить его в стол? Я пытался использовать функцию, которая не сработала, и я не хочу делать что -то вроде t[adj]={}
Потому что я не хочу делать подтол t
.
Я чувствую, что он смотрит на меня прямо в лицо, но я рисую пустой.
Изменить для разъяснения:
Я знаю, как получить прилагательное, которое мне нужно, или как показать ценность для большого и т. Д., о чем я говорю, так это способность делать это:
- Найдите значение на основе прилагательного, найденного. В таком случае,
big
было найдено, значениеtall
. - Взять найдено (опять же, в данном случае,
tall
) и превратить это значение в свою собственную таблицу. Тогда у меня будет стол сверху, и новый, который не был заполнен, называетсяtall
. Анкет Таким образом, после того, как я заполняю это информацией, я могу назвать этоtall["somekeyvalue"]
Это имеет немного больше смысла сейчас?
Решение
Если вас не беспокоит глобальная переменная, вы можете использовать таблицу глобальной среды.
После получения значения (по t [Adj]) вы можете создать свою таблицу так:
_G[t[adj]] = {}
Тогда вы сможете получить доступ к таблице высокий везде
Другие советы
Мне кажется, что когда вы соответствуете прилагательному, вы хотите посмотреть его в своем столе и вернуть все псевдоним, в котором у вас есть.
Чтобы сделать это в Луа, вы бы использовали []
Чтобы посмотреть на стол:
t = {big = "tall", little = "short", fat = "wide", skinny = "thin"}
adj = string.match(page,'Adjective: (%w+)')
print(t[adj])
Если он соответствует «прилагательному: Big» в page
, он печатает tall
. Анкет Это то, что вы хотите? Часть о «превратить его в стол» меня сбивает с толку.
Поскольку я не знаю, как создать динамическую переменную в Lua, я могу предложить вам создать таблицу, которая будет контейнером других таблиц, которые вы создаете Будьте таблицей с элементами, которые вы добавляете к нему.
Проверьте этот пример:
-- you have to initialize it
result = {}
result.tall = {}
result.little = {}
--insert the elements that can be another tables or not
table.insert (result.tall, 'enormous')
table.insert (result.little , {s = 'short'})
-- so you can access it later
for k,v in pairs(result.tall) do
print(k,v)
end