Преобразовать таблицу в строку, а затем снова
Я хотел бы знать, как преобразовать таблицу в строку, а затем обратно.
Я хочу использовать модуль сокетов для отправки таблицы, но я должен сделать это через строку.
Я хотел бы сделать это так:
a = { 1, 2, 3 } -- create table
b = tostring(a) -- convert table to string
c = totable(b) -- convert string back to table
2 ответа
Как уже говорили другие, вы не можете легко сериализовать все, но вы можете сериализовать очень много вещей. Для этого вида IPC JSON является текущим языком общения, и я очень рекомендую его, тем более что вы можете довольно безопасно обмениваться данными со многими другими языками.
У Lua есть несколько реализаций, но обратите внимание на эту, особенно, поскольку она хорошо работает, довольно стабильна, и на github есть хороший уровень обслуживания. Пример кода:
json = require("json")
encoded = json.encode(someVar)
decoded = json.decode(someStr)
Для этого существует множество существующих библиотек Lua. См. http://lua-users.org/wiki/TableSerialization Функции сериализации таблиц довольно просты, писать свои собственные - хорошее упражнение для обучения.
PS. Только что проверил... В API love2D уже есть библиотека сериализации таблиц.