Сохранение и чтение таблиц в файле

Столкнулись с проблемой в использовании макросов? Здесь можно получить помощь.
User avatar
John Doe
Бюрократ
Posts: 12208
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 32 times
Been thanked: 162 times

Сохранение и чтение таблиц в файле

Post by John Doe » Tue 03 Oct, 2017 13:54

Latest post of the previous page:

Code: Select all

local t = {1,2,3,[5]=5,a="a"}
return LongTableToString(t,",")
Получаем:

Code: Select all

{
1,2,3,a="a"
}
(5 пропущено)

И надо учитывать, что нет защиты от таблиц с перекрёстными ссылками

buniak_a_h
Posts: 705
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 67 times
Been thanked: 19 times
Contact:

Сохранение и чтение таблиц в файле

Post by buniak_a_h » Tue 03 Oct, 2017 15:23

John Doe wrote:
Tue 03 Oct, 2017 13:54
(5 пропущено)
Ну да, я это знал. Просто в моём случае пропуск значения при числовых индексах неактуален.
John Doe wrote:
Tue 03 Oct, 2017 13:54
И надо учитывать, что нет защиты от таблиц с перекрёстными ссылками
Как раз защита от перекрёстных ссылок занимала у меня наибольшее время: другого способа, кроме как запомнить ссылку на таблицу, а при повторной подставлять запомненное значение, я не знаю. А поиск ссылки - долгое дело...
Первую проблему, в принципе, решает функция serialize из LuaMacro\api.lua. Увы, циклическая ссылка, насколько я понимаю, её тоже вышибет. НЕ ПРОВЕРЯЛ.

User avatar
John Doe
Бюрократ
Posts: 12208
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 32 times
Been thanked: 162 times

Сохранение и чтение таблиц в файле

Post by John Doe » Tue 03 Oct, 2017 17:17

buniak_a_h wrote:
Tue 03 Oct, 2017 15:23
Как раз защита от перекрёстных ссылок занимала у меня наибольшее время
А откуда в вашем случае такие ссылки?
buniak_a_h wrote:
Tue 03 Oct, 2017 15:23
А поиск ссылки - долгое дело...
Разве?
И при повторной чаще всего достаточно пропускать.

buniak_a_h
Posts: 705
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 67 times
Been thanked: 19 times
Contact:

Сохранение и чтение таблиц в файле

Post by buniak_a_h » Tue 03 Oct, 2017 20:33

John Doe wrote:
Tue 03 Oct, 2017 17:17
buniak_a_h wrote:
Tue 03 Oct, 2017 15:23
Как раз защита от перекрёстных ссылок занимала у меня наибольшее время
А откуда в вашем случае такие ссылки?
Именно потому, что их у меня и нету, я отказался от этой проверки
John Doe wrote:
Tue 03 Oct, 2017 17:17
buniak_a_h wrote:
Tue 03 Oct, 2017 15:23
А поиск ссылки - долгое дело...
Разве?
И при повторной чаще всего достаточно пропускать.
Не совсем так. При первой ссылке на таблицу надо её преобразовывать, и запоминать пару ссылок {старая,новая (в виде текста, возможно)}. При повторной вместо преобразования подтаблицы просто указывать ссылку на уже преобразованную.
Стандартная ситуация - когда во вложенной таблице есть ссылка на owner - ту, в которую эта вложена. Сталкивался, но не в этом проекте. Так что тема не совсем отвлечённая.

User avatar
John Doe
Бюрократ
Posts: 12208
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 32 times
Been thanked: 162 times

Сохранение и чтение таблиц в файле

Post by John Doe » Tue 03 Oct, 2017 22:16

buniak_a_h wrote:
Tue 03 Oct, 2017 15:23
функция serialize из LuaMacro\api.lua. Увы, циклическая ссылка, насколько я понимаю, её тоже вышибет. НЕ ПРОВЕРЯЛ.
Не вышибет, циклические ссылки поддерживаются.

Post Reply

Return to “Нужна помощь”