Lua: Создайте таблицу из ранее установленной переменной

StackOverflow https://stackoverflow.com/questions/9323444

  •  27-10-2019
  •  | 
  •  

Вопрос

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

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

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

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

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

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

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

Изменить для разъяснения:

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

  1. Найдите значение на основе прилагательного, найденного. В таком случае, big было найдено, значение tall.
  2. Взять найдено (опять же, в данном случае, 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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top