web-dev-qa-db-fra.com

Que signifie # à Lua?

J'ai vu le caractère de hachage "#" être ajouté à l'avant des variables beaucoup dans Lua.

Qu'est ce que ça fait?

EXEMPLE

-- 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

Excusez-moi si cela a déjà été demandé, j'ai beaucoup cherché sur Internet mais je ne semble pas avoir trouvé de réponse. Merci d'avance!

37
Bicentric

C'est opérateur de longueur :

L'opérateur de longueur est désigné par l'opérateur unaire #. La longueur d'une chaîne est son nombre d'octets (c'est-à-dire la signification habituelle de la longueur de chaîne lorsque chaque caractère fait un octet).

La longueur d'une table t est définie comme étant tout indice entier n tel que t [n] n'est pas nul et t [n + 1] est nul; de plus, si t [1] est nul, n peut être nul. Pour un tableau régulier, avec des valeurs non nulles de 1 à un n donné, sa longueur est exactement celle n, l'indice de sa dernière valeur. Si le tableau a des "trous" (c'est-à-dire des valeurs nulles entre d'autres valeurs non nulles), alors #t peut être l'un des indices qui précède directement une valeur nulle (c'est-à-dire qu'il peut considérer une telle valeur nulle comme la fin du tableau).

54
Etan Reisner