#a在Lua中意味着什么?

Bic*_*ric 35 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
Run Code Online (Sandbox Code Playgroud)

如果已经有人问过这个道歉,我已经在互联网上搜索了很多,但我似乎没有找到答案.提前致谢!

Eta*_*ner 51

这是长度运算符:

长度运算符由一元运算符#表示.字符串的长度是它的字节数(也就是每个字符是一个字节时字符串长度的通常含义).

表t的长度被定义为任何整数索引n,使得t [n]不是nil且t [n + 1]是nil; 此外,如果t [1]为零,则n可以为零.对于常规数组,非n值从1到给定n,其长度恰好是n,即其最后一个值的索引.如果数组具有"空洞"(即,其他非零值之间的nil值),那么#t可以是直接在nil值之前的任何索引(也就是说,它可以将任何这样的nil值视为结束的数组).

  • 谢谢你的明确答案!非常感谢^ _ ^ (4认同)

Mer*_*ury 7

#是 lua 长度运算符,适用于字符串或表数组

例子:

print(#"abcdef")  -- Prints 6
print(#{"a", "b", "c", 88})  -- Prints 4

-- Counting table elements is not suppoerted:
print(#{["a"]=1, ["b"]=9}) -- # Prints 0
Run Code Online (Sandbox Code Playgroud)