У вас уже есть решение вопроса - единственный способ - перебрать всю таблицу с помощью pairs(..)
.
function tablelength(T)
local count = 0
for _ in pairs(T) do count = count + 1 end
return count
end
Также обратите внимание, что определение оператора "#" немного сложнее, чем это. Позвольте мне проиллюстрировать это, взяв эту таблицу:
t = {1,2,3}
t[5] = 1
t[9] = 1
Согласно руководству, любой из 3, 5 и 9 является действительным результатом для #t
. Единственный разумный способ его использования - с массивами из одной смежной части без нулевых значений.