Re: StaticVar: Обмен данными между Lua-скриптами в QUIK
Одного опасаюсь: при таком синтаксисе (прям как таблицы) пользователи решат, что это прям натурально Lua-таблицы и начнут использовать/требовать общение и синтаксис обращения к ним как полностью аутентичным Lua-таблицам (применяя всякие table.sort(), table.insert, итерирование в for и т.п.). А т.к. пока (для скорости обмена между скриптами скриптами) предполагается это реализовывать вручную, не копируя в реальные промежуточные Lua-таблицы (при обращении по индексам), то как бы не замаяться всё это поддерживать
это не кажется таким уж сложным, если в качестве хранилища использовать не свои структуры, а lua же. понадобится три вещи: функция deepcopy(source_lua_state, dest_lua_state) которая копирует объект со стека одного стейта в стек другого и метаметоды __index и __newindex для таблицы, которую возвращает либа. deepcopy() должна быть защищена критической секцией, а внутри рекурсивно обходить все вложенные объекты. и, кстати, по скорости будет так же.
[s]можно реализовать две стратегии: все скрипты разделяют один объект, либо в каждом скрипте есть своя копия, и мы делаем копирование во все экземпляры. все зависит от того, что пользователь делает чаще: чтение или запись и насколько записываемые объекты развесисты.[/s] второй вариант не получится.
ps: кстати, если остановить все скрипты, использующие staticvar, то хранилище обнулится. наверное, это не очень хорошо. можно грузить либу-владелицу хранилища в квик при первой записи в хранилище, а выгружать - на wm_close основного окна quik.