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

注意#只能獲取索引爲連續數字的長度,若是不連續,只能獲取到連續的地方,其餘地方被捨棄。

相關文章
相關標籤/搜索