lua 求table长度和判断空
local table_a = {}
    判断一:(错误方法)
    if table_a == {} then
        --你会发现你怎么也进不来 条件判断始终返回false,为什么会这样呢?
        --原因:{}相当于创建了一个表,只不过这个表的名字是匿名的,你看不到,我们假设它叫table_b
        --你会发现判断条件变成了比较table_a、table_b的内存地址。所以条件判断始终返回false。
        --正确的实现方法:判断二  
    end
判断二:(正确方法)
            if next(table_a) == nil then
                --你想实现的操作
            end
--成功原因:next获取表中的下一个内容,在空表里是没有下一个内容的,返回nil
//怎么求table的长度呢
获取数组的长度
对于一个数组我们通常可以使用#和table.getn来获取其长度
- 
tabletest = {1,2,3,5,7}
- 
print(table.getn(tabletest)) ------》5
- 
print(#tabletest) ------》5
- 1
- 2
- 3
使用这两种方法都能得到这个数组的长度,但是如果
- 
tabletest = {1,2,nil,3,5,7}
- 
print(table.getn(tabletest)) ------》2
- 
print(#tabletest) ------》2
- 1
- 2
- 3
发现不能获得我们数组真正的长度,这是因为数组默认遇到nil便被判断为数组结束,所以最好不要用#和table.getn来获取包含有nil的数组长度
获取table的长度
对于table来说,如果他不是数组,我们使用#和table.getn是不能获取它的长度的
- 
tabletest = {a=1,b=2,c=3,e=5,f=7}
- 
print(table.getn(tabletest)) ------》0
- 
print(#tabletest) ------》0
- 1
- 2
- 3
我们可以使用pairs来获取
- 
tabletest = {a=1,b=2,c=3,d=5,e=7}
- 
local count=0
- 
for k,v in pairs(tabletest) do
- 
count = count + 1
- 
end
- 
print(count) ------》5
注意#只能获取索引为连续数字的长度,如果不连续,只能获取到连续的地方,其他地方被舍弃。
 
                    
                 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号