Lua: создать таблицу из ранее установленной переменной - PullRequest
1 голос
/ 17 февраля 2012

Я собираю информацию с веб-сайта для сбора данных, и одна из вещей, которые я должен сделать, - это изменить часть информации, которую страница дает мне, на другую часть информации и превратить эту вторую часть информации в переменную.,Однако я просто не могу придумать, как это сделать.

Учитывая приведенную ниже таблицу:

t = {big = "tall", little = "short", fat = "wide", skinny = "thin"}

... как мне это сделать, когда я это сделаю:

adj = string.match(page,'Adjective: (%w+)')

... и оно соответствует big, я могу вернуть значение tall, но превратить его в таблицу?Я попытался использовать функцию, которая не работала, и я не хочу делать что-то вроде t[adj]={}, потому что я не хочу создавать вложенную таблицу из t.

IЯ чувствую, что смотрю мне прямо в лицо, но я рисую пробел.

Редактировать для уточнения:

Я знаю, как получить прилагательное, которое мне нужно, или как показатьзначение для большого и т. д. Я говорю о возможности сделать следующее:

  1. Найти значение на основе найденного прилагательного.В этом случае было найдено big, значение равно tall.
  2. Возьмите найденное значение (опять же, в данном случае tall) и превратите это значение в свою собственную таблицу.Тогда у меня будет таблица сверху и новая, которая еще не заполнена, под названием tall.Таким образом, после того, как я заполню ее информацией, я могу назвать ее по tall["somekeyvalue"]

Теперь это имеет смысл?

Ответы [ 3 ]

1 голос
/ 18 февраля 2012

Если вам не нужна глобальная переменная, вы можете использовать глобальную таблицу окружения.

После получения значения (через t [adj]) вы можете создать свою таблицу следующим образом:

_G[t[adj]] = {}

После этого вы сможете получить доступ к таблице высокий везде

1 голос
/ 17 февраля 2012

Мне кажется, что когда вы подходите к прилагательному, вы хотите посмотреть его в своей таблице и вернуть любой псевдоним, который у вас там есть.

Чтобы сделать это в lua, вы должны использовать[] для поиска в таблице:

t = {big = "tall", little = "short", fat = "wide", skinny = "thin"}
adj = string.match(page,'Adjective: (%w+)')
print(t[adj])

Если оно соответствует «Прилагательное: большой» в page, будет напечатано tall.Это то, что вы хотите?Часть о «превратить это в стол» сбивает меня с толку.

0 голосов
/ 17 февраля 2012

Поскольку я не знаю, как создать динамическую переменную в Lua, я могу предложить вам создать таблицу, которая будет контейнером других таблиц, которые вы создаете, так что вы можете использовать ее по ссылке, как этот "result.tall" и это будет таблица с элементами, которые вы добавляете в нее.

Проверьте этот пример:

-- 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
...