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

(转) 关于lua table是否为空的判断

时间:2014-10-09 15:12:03      阅读:241      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   io   os   sp   div   on   cti   

在项目的脚本lua中经常有这样的需求,

1、local a = {}

2、对a进行处理

3、对a是否为空表进行判断

关于对a是否为空表的判断,我发现有些代码如此做:

if a == {} then

这样的结果就是a == {}永远返回false,是一个逻辑错误。因为这里比较的是table a和一个匿名table的内存地址。

也有些代码如此做:

if table.maxn(a) == 0 then

这样做也不保险,除非table的key都是数字,而没有hash部分。

难道真的要遍历table发现有东西就return false跳出才能断定它是否为空吗?这样写至少代码太难看. 

网上小搜了一下,发现原来官方手册里早已经给了答案,那就是靠lua内置的next函数

即如此用:if next(a) == nil then

next其实就是pairs遍历table时用来取下一个内容的函数.

在项目的module中最好封装一下,免得module本地也有next函数

于是封装后判断的lua table是否为空的函数如下:

function table_is_empty(t)

        return _G.next( t ) == nil

end

原地址 http://yy1983228.blog.163.com/blog/static/54211491200881092239485/

(转) 关于lua table是否为空的判断

标签:style   blog   http   io   os   sp   div   on   cti   

原文地址:http://www.cnblogs.com/wodehao0808/p/4012701.html

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