lua 求table长度和判断空

local table_a = {}数组


    判断一:(错误方法)
    if table_a == {} then
        --你会发现你怎么也进不来 条件判断始终返回false,为何会这样呢?
        --缘由:{}至关于建立了一个表,只不过这个表的名字是匿名的,你看不到,咱们假设它叫table_b
        --你会发现判断条件变成了比较table_a、table_b的内存地址。因此条件判断始终返回false。
        --正确的实现方法:判断二  
    endui

 

    判断二:(正确方法)spa

            if next(table_a) == nil then
                --你想实现的操做
            endcode

            --成功缘由:next获取表中的下一个内容,在空表里是没有下一个内容的,返回nil索引

//怎么求table的长度呢内存

获取数组的长度

对于一个数组咱们一般能够使用#和table.getn来获取其长度get

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

使用这两种方法都能获得这个数组的长度,可是若是table

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

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

获取table的长度

对于table来讲,若是他不是数组,咱们使用#和table.getn是不能获取它的长度的test

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

咱们能够使用pairs来获取 

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

注意#只能获取索引为连续数字的长度,若是不连续,只能获取到连续的地方,其余地方被舍弃。

相关文章
相关标签/搜索