lua table相关注意事项

Posted Code~

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了lua table相关注意事项相关的知识,希望对你有一定的参考价值。

1. 判断是否为空: 

使用lua内置的next函数,比如:

if next(tableData) ~= nil then

但要注意:使用next判断的话,不得赋予tableData新的元素,否则结果是未知的。

2. 删除元素:

不建议方式:

local datalist = {1,2,3,4,5,6,7,8,9,10,20}
for k, v in pairs(datalist) do
    if v % 2 == 0 then
        table.remove(datalist, k)
    end
end

table.foreachi(datalist,function(k,v)
    print("output value:"  .. v)
end)
输出结果:
[LUA-print] output value:1
[LUA-print] output value:3
[LUA-print] output value:5
[LUA-print] output value:7
[LUA-print] output value:9
[LUA-print] output value:20

会发现有的数据没有被删除,故此推荐如下方式(从后往前删除):

local datalist = {1,2,3,4,5,6,7,8,9,10,20}
    
for i = #datalist,1, -1 do
    if datalist[i] % 2 == 0 then
        table.remove(datalist, i)
    end
end    

table.foreachi(datalist,function(k,v)
    print("output value:" .. v)   -- outvalue:1,3,5,7,9,20
end)
[LUA-print] output value:1
[LUA-print] output value:3
[LUA-print] output value:5
[LUA-print] output value:7
[LUA-print] output value:9

 

以上是关于lua table相关注意事项的主要内容,如果未能解决你的问题,请参考以下文章

从实现求差集介绍lua table需要注意的一些问题

lua学习之table

lua如何对外输出数据,相关函数都有哪些?

lua 中为了批量删除 元素 我写了如下代码

lua语言--table的构建

lua 中神奇的表(table) | Linux 中国