Что означает # в Lua?

Я видел, что хеш-символ '#' добавляется к фронту переменных в Lua.

Что оно делает?

ПРИМЕР

-- sort AIs in currentlevel
table.sort(level.ais, function(a,b) return a.y < b.y end)
local curAIIndex = 1
local maxAIIndex = #level.ais
for i = 1,#currentLevel+maxAIIndex do
    if level.ais[curAIIndex].y+sprites.monster:getHeight() < currentLevel[i].lowerY then
        table.insert(currentLevel, i, level.ais[curAIIndex])
        curAIIndex = curAIIndex + 1
        if curAIIndex > maxAIIndex then
            break
        end
    end
end

Извиняюсь, если это уже было задано, я много искал в Интернете, но, похоже, я не нашел ответа. Заранее спасибо!

Ответ 1

Это оператор длины:

Оператор длины обозначается унарным оператором #. Длина строки - это количество байтов (то есть обычное значение длины строки, когда каждый символ является одним байтом).

Длина таблицы t определяется как любой целочисленный индекс n такой, что t [n] не является nil и t [n + 1] равно nil; кроме того, если t [1] равно nil, n может быть нулем. Для регулярного массива с не-nil значениями от 1 до заданного n его длина точно равна n, индексу последнего значения. Если массив имеет "дыры" (то есть значения nil между другими значениями, отличными от nil), то #t может быть любым из индексов, которые непосредственно предшествуют значению nil (то есть, он может рассматривать любое такое значение nil, как конец массива).