在使用字符串键索引时 Lua 表的大小错误。

通常用于获取表大小,使用标准表库函数#运算符即可。

但是当我创建一个具有字符串键索引的表时,它不起作用。

local function addWriterIdListToTable()

        local returnTable = {}
        local requestString =“ 123416 56788 90121”
        local idList = requestString:split(“”)  //将 requestString 字符串以空格为分隔符分割成一个list,存放到 idList list 中
        for i,v in ipairs(idList) do
                local oneId = p:split(“:”) // 将list 中的每一个 string 以 : 为分隔符分割成一个两个元素的 list,存放到 oneId 中 
                returnTable [oneId [1]] = oneId [2] // 将 oneId [1]作为key,oneId [2]作为value,添加到returnTable中
        end

        for k,v in pairs(returnTable) do
                print(k ..“”.. v)
        end
        print(“表的大小:” ..# returnTable)

        返回returnTable

end

我想将一个字符串转换为表格。 函数“split”解析字符串,将其用参数作为分隔符分割,并作为表格返回。

上述函数执行的结果如下。

1234 16
9012 1
5678 8
表格大小:0

它展示了我期望的表的内容,但其计数不正确。

能帮我吗?

预先感谢。

点赞
用户582
用户582

# 操作符告诉你表中最高的数字索引。如果数字索引中有任何间隙,它可能会返回间隙下面的最高索引。基本上,# 操作符只在你将表当作密集型数组来处理时才有效。

如果你确实想知道表中有多少条目,你需要使用 pairs() 函数遍历它并计算你获得了多少项。

function countTableSize(table)
    local n = 0
    for k, v in pairs(table) do
        n = n + 1
    end
    return n
end

尽管我想知道你为什么需要知道表中有多少条目。通常你关心的只是表是否为空,你可以通过查看 next(table) == nil 是否为真来检查它。

2012-05-22 02:33:49