lua 中的#和table.getn

来源:互联网 发布:雅尔塔体系 知乎 编辑:程序博客网 时间:2024/06/06 00:35

获取数组的长度

对于一个数组我们通常可以使用#和table.getn来获取其长度

tabletest = {1,2,3,5,7}print(table.getn(tabletest))     ------》5print(#tabletest)                ------》5

使用这两种方法都能得到这个数组的长度,但是如果

tabletest = {1,2,nil,3,5,7}print(table.getn(tabletest))     ------》2print(#tabletest)                ------》2

发现不能获得我们数组真正的长度,这是因为数组默认遇到nil便被判断为数组结束,所以最好不要用#和table.getn来获取包含有nil的数组长度

获取table的长度

对于table来说,如果他不是数组,我们使用#和table.getn是不能获取它的长度的

tabletest = {a=1,b=2,c=3,e=5,f=7}print(table.getn(tabletest))     ------》0print(#tabletest)                ------》0

我们可以使用pairs来获取

tabletest = {a=1,b=2,c=3,d=5,e=7}local count=0for k,v in pairs(tabletest) do     count = count + 1endprint(count)     ------》5

注意,判断一个table是否为空时,不能使用 if val == nil then因为table={}时不是空
可以使用next(val) ==nil来判断

原创粉丝点击