• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Lua4.0中getn陷阱

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

• 使用t[n] = nil方式删除元素会导致意外结果

t = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
t[1] = nil;
print(getn(t));                     -- 10

t = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
t[5] = nil;
print(getn(t));                     -- 10

t = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
t[10] = nil;
print(getn(t));                     -- 9

• 混用tremove和[]会导致getn失效

t = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
tremove(t, 1);
t[10] = 11;
print(getn(t));                     -- 9

• 混用tinsert和[]会导致getn失效

t = {2, 3, 4, 5, 6, 7, 8, 9, 10};
tinsert(t, 1, 1);
t[11] = 11;
print(getn(t));                     -- 10

• 非连续下标的table不能使用getn取得元素个数

t = {};
t[2] = 1;
t[3] = 2;
print(getn(t));                     -- 3

t = {
    aaa = 1,
    bbb = 2,
};
print(getn(t));                     -- 0

Lua4.0中getn正确使用规则


       遵循以下两条规则来使用Lua 4.0中的顺序表可以保证getn的操作不会失效:
       • 使用tinsert和tremove添加和删除元素;
       • 使用[]操作修改元素,但是不能置为nil;

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
LUA静态库动态库LD_LIBRARY_PATH动态库的查找路径GCC“-l”参数发布时间:2022-07-22
下一篇:
ngx_lua金山项目黄雀发布时间:2022-07-22
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap