Строка к столу в Lua - PullRequest
       16

Строка к столу в Lua

4 голосов
/ 19 августа 2010

Я использую LuaSocket и http.request для вызова удаленного PHP-скрипта, который генерирует таблицу Lua и выводит ее в браузер.

Когда я сохраняю ответ http.request в переменной, это строка,что делает таблицу непригодной для использования в моем коде Lua.

Например:

eventData = http.request("http://www.example.com/events.php")
print( eventData )

--print outputs this "string", that is really a Lua table that PHP generated
months={
    'January',
    'February',
    'March',
    'April',
    'May',
    'June',
    'July',
    'August',
    'September',
    'October',
    'November',
    'December',
}

Если я, например, пытаюсь вызвать месяцы [4], она выдаст ошибку «попытка индексировать глобально»месяцев (нулевое значение) ".Как я могу привести эту строку в качестве пригодной для использования таблицы?

Спасибо!

Ответы [ 2 ]

10 голосов
/ 19 августа 2010

Вы можете использовать loadstring для создания фрагмента lua, который вы можете выполнить.

eventData = [[
months = {
    'January',
    'February',
    'March',
    'April',
    'May',
    'June',
    'July',
    'August',
    'September',
    'October',
    'November',
    'December',
}
]]

loadstring(eventData)()
if months then
    print(table.concat(months, ", "))
end
2 голосов
/ 18 августа 2013

Начиная с Lua 5.2, load поддерживает строки в качестве аргументов. Так что теперь вы можете использовать ответ Адама выше, заменив loadstring на load.

Обратите внимание, что load(eventData) создает чанк типа "функция", а load(eventData)() создает чанк и вызывает его, создавая тем самым вашу таблицу. Это заставило меня споткнуться на некоторое время.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...