Есть ли способ для C ссылаться на объект в Lua 5.2 так же, как вы использовали бы система ссылок за исключением того, что эти ссылки слабые и могут быть удалены сборщиком мусора в любое время? Другими словами, существует ли реестр всех текущих объектов Lua, который не влияет на счетчик ссылок на объекты?
поиск слабого реестра Lua
comment
lua-users.org/wiki/WeakTablesTutorial
- person Robert Harvey   schedule 09.08.2012
Ответы (1)
Вы можете сделать это, введя один уровень косвенности - вместо того, чтобы хранить значения непосредственно в реестре и заставлять его быть слабым, сделайте следующее:
- Создать таблицу
- Сделайте его слабым, установив метатаблицу
{__mode = "v"}
- Сохраните эту таблицу в реестре, используя какой-то известный, но уникальный ключ
- Храните все объекты, которые вы хотите отслеживать, в этой таблице.
- Используйте эту таблицу, хранящуюся в реестре, вместо самого реестра для поиска всех ваших объектов.
Обратите внимание, что нет «отслеживания всех объектов Lua» (например, ObjectSpace в Ruby), если только вы не используете какое-то тяжелое постоянство, например Pluto. Вы можете получить доступ только к объектам, которые вы храните/отслеживаете сами.
person
Michal Kottman
schedule
08.08.2012