Преобразовать таблицу в строку, а затем снова

Я хотел бы знать, как преобразовать таблицу в строку, а затем обратно.

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

Я хотел бы сделать это так:

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 уже есть библиотека сериализации таблиц.

Другие вопросы по тегам