Lua中的#符号代表什么?

我在 Lua 中经常看到将哈希符号 '#' 添加到变量前面。

它是做什么的?

示例

-- 对当前关卡的 AI 进行排序
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

如果这已经被问过了,我很抱歉,我在互联网上搜索了很多,但似乎没有找到答案。先感谢你们的帮助!

点赞
用户258523
用户258523

这就是 长度运算符:

长度运算符用一元运算符 # 表示。字符串的长度是其字节数(也就是在每个字符都是一个字节的情况下字符串长度的一般含义)。

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

2013-07-31 15:32:17
用户3263659
用户3263659

是一个 Lua 长度操作符,可用于字符串或数组类型的表。

例如:

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

-- 不支持计算表元素数量:
print(#{["a"]=1, ["b"]=9}) -- 输出 0
2020-12-16 10:02:10
用户17088770
用户17088770

#最常用于获取表的范围。例如:

local users = {"Grace", "Peter", "Alice"}
local num_users = #users

print("There is a total of ".. num_users)

输出结果为: 3

2021-10-06 11:40:34