Друзья, как полностью очистить массив в LUA ? Команда my_array={} не помогает

Страницы: 1
RSS
Друзья, как полностью очистить массив в LUA ? Команда my_array={} не помогает
 
Друзья, как полностью очистить массив в LUA ? Команда my_array ={} не помогает
 
Это одновременно и простой и сложный вопрос. Таблицы в луа это ссылочный объект.
Т.е. запись my_array ={} создает новый объект - объявляет и инициализирует. В переменной будет новая ссылка, а старая безвозвратно утеряна, и очищена сборщиком мусора, если на нее не было больше ссылок.

Поэтому, если вопрос: как очистить существующий объект, то ответ - пройтись циклом и присвоить nil для ключей, индексов.А запись my_array ={} "как бы" очищает, да. Но при этом будет новая ссылка и если есть блоки кода, хранящие ссылку на my_array, то они не увидят новую, без повторного присвоения.
 
Цитата
Nikolay написал:
Это одновременно и простой и сложный вопрос. Таблицы в луа это ссылочный объект.
Т.е. запись my_array ={} создает новый объект - объявляет и инициализирует. В переменной будет новая ссылка, а старая безвозвратно утеряна, и очищена сборщиком мусора, если на нее не было больше ссылок.

Поэтому, если вопрос: как очистить существующий объект, то ответ - пройтись циклом и присвоить nil для ключей, индексов.А запись my_array ={} "как бы" очищает, да. Но при этом будет новая ссылка и если есть блоки кода, хранящие ссылку на my_array, то они не увидят новую, без повторного присвоения
Благодарю
 
А что означает "очистить массив"?
Какие последствия ожидаются?
Присвоение nil  - это всего лишь  запись 0 в переменную типа.
Страницы: 1
Читают тему
Наверх