码迷,mamicode.com
首页 > 其他好文 > 详细

lua table相关注意事项

时间:2018-01-14 19:36:26      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:输出   cti   gpo   val   关注   函数   ble   each   注意   

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相关注意事项

标签:输出   cti   gpo   val   关注   函数   ble   each   注意   

原文地址:https://www.cnblogs.com/SkyflyBird/p/8283899.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!