Lua - длина таблицы кажется неверной

a = {}
a[1] = 1
a[2] = nil -- does nothing, as a[2] is already nil
a[3] = 14

print(#a)

печатает 1

a = {}
a[1] = 1
a[2] = nil -- does nothing, as a[2] is already nil
a[3] = 14
a[4] = 5

print(#a)

принты 4

Что действительно возвращает оператор #?

1 ответ

Решение

Если таблица не является правильной последовательностью, возвращаемое значение # Оператор применяется к этой таблице не определено.

В обоих ваших случаях a не правильная последовательность, потому что a[2] == nil а также a[3] ~= nil,

# Оператор возвращает длину соответствующих последовательностей.

Другие вопросы по тегам