В Lua это, кажется, что если один числовой ключ отсутствует в таблице, длина до сих пор продолжается подсчет:Длина последовательного стола в Lua может пропустить индексы?
> print(#{[1]=1,[2]=2,[4]=4})
4
Но это пропускающие два индекса стопов на прорыве
> print(#{[1]=1,[2]=2,[5]=5})
2
Это не просто несогласованный конструктор. Даже если пропущенный индекс создается после создания таблицы, он все еще отсчитывает прошлое, так что разрыв остается только одним.
> x={1,2}
> print(#x)
2
> x[4]=4
> print(#x)
Является ли это ошибкой реализации или это как Lua должно работать. Почему так? Любые ссылки на документацию об этом были бы интересными.
Спасибо. Я понимаю, что «#» действительно предназначено только для последовательных таблиц и что это может быть оправданием Lua для этого поведения, кажется странным, как он обрабатывает это «#» в несекретных таблицах. – DoubleMx2