Согласно документации , длина такой таблицы (#tab) должна быть 6 , но у меня показывает 9 . Это ошибка в документации или в самом Lua/QLUA?
Ошибки нет.
The length of a table t is defined to be ANY integer index n such that t[n] is not nil and t[n+1] is nil; moreover, if t[1] is nil, n can be zero. For a regular array, with non-nil values from 1 to a given n, its length is exactly that n, the index of its last value. If the array has "holes" (that is, nil values between other non-nil values), then #t can be ANY of the indices that directly precedes a nil value (that is, it may consider any such nil value as the end of the array).
Я выделил слово ANY из вашей документации большими буквами.
s_mike@rambler.ru, Во-первых, документация не моя. Это официальная документация. Во-вторых, вы явно не поняли смысл этого "any":
Цитата
The length of a table t is defined to be any integer index n such that t[n] is not nil and t[n+1] is nil; moreover, if t[1] is nil, n can be zero. For a regular array, with non-nil values from 1 to a given n, its length is exactly that n, the index of its last value. If the array has "holes" (that is, nil values between other non-nil values), then #t can be any of the indices that directly precedes a nil value (that is, it may consider any such nil value as the end of the array).
Надо делать так, как надо. А как не надо - делать не надо.
Получается использование оператора # для таблицы с целочисленными индексами не имеет смысла, если только достоверно не известно, что элементы таблицы заполнены без пропусков. В противном случае результат может быть не предсказуем.
Надо делать так, как надо. А как не надо - делать не надо.
дополню инфой из документации, ссылку дать не могу так как не помню. ------------------- При работе VMLUA с таблицами происходит следующее. -------------------- Элементы не проверяются на содержимое так как это замедляло бы работу. --------------------- поэтому если элементу присвоить nil и он не последний, то сборщик его не видит так как нет функции упаковки разряженных таблиц. т е элемент существует , а что внутри таблицы сборщик мусора никогда не проверяет. Это существенно ускоряет вычисления.