dollar
@dollar

Почему в массиве одновременное добавление и удаление вызывает ошибку?

local t = {a=1}

for k,v in pairs(t) do
  t[k] = nil
  t[1] = 2
end

Разве в спецификации сказано, что так делать нельзя?
  • Вопрос задан
  • 35 просмотров
Решения вопроса 1
@zedxxx
В документации к lua 5.1, в описании функции next сказано:

The behavior of next is undefined if, during the traversal, you assign any value to a non-existent field in the table. You may however modify existing fields. In particular, you may clear existing fields.


т.е. можно изменять или удалять существующие элементы, но нельзя добавлять новые.

В доках к lua 5.3 я такого замечания не нашёл (плохо искал?), но вообще, с практической точки зрения, добавление новых элементов в таблицу во время итерирования по ней, очень плохая идея.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
DEVEX Санкт-Петербург
от 150 000 до 200 000 ₽
A3F Group Москва
от 120 000 до 250 000 ₽
Dlink Рязань
от 700 $
19 февр. 2020, в 04:53
2000 руб./за проект
19 февр. 2020, в 02:24
500 руб./за проект
18 февр. 2020, в 23:53
8000 руб./за проект