tbl = {}
Это не столько очистит таблицу, сколько просто создаст новую. Старый может получить сборщик мусора, в зависимости от того, есть ли другие ссылки на него.
for k, v in pairs(tbl) do v = nil end
Это абсолютно ничего не делает. Это пустая трата вычислительной мощности.
for k, v in pairs(tbl) do tbl[k] = nil end
Это фактически очищает таблицу без создания новой. Для небольших таблиц это часто более производительно, чем создание новой таблицы, так как это означает, что для G C требуется меньше работы, но это несколько более продвинутый метод оптимизации, и это не значит, что очистка таблиц всегда лучше.
Обратите внимание, что pairs
использует функцию next
, которая может обрабатывать ключи, удаляемые во время итерации.