lua 求table长度和判断空
?? local table_a = {}
??? 判斷一:(錯(cuò)誤方法)
??? if table_a == {} then
??????? --你會(huì)發(fā)現(xiàn)你怎么也進(jìn)不來(lái) 條件判斷始終返回false,為什么會(huì)這樣呢?
??????? --原因:{}相當(dāng)于創(chuàng)建了一個(gè)表,只不過(guò)這個(gè)表的名字是匿名的,你看不到,我們假設(shè)它叫table_b
??????? --你會(huì)發(fā)現(xiàn)判斷條件變成了比較table_a、table_b的內(nèi)存地址。所以條件判斷始終返回false。
??????? --正確的實(shí)現(xiàn)方法:判斷二??
??? end
?
??? 判斷二:(正確方法)
??????????? if next(table_a) == nil then
??????????????? --你想實(shí)現(xiàn)的操作
??????????? end
??????????? --成功原因:next獲取表中的下一個(gè)內(nèi)容,在空表里是沒(méi)有下一個(gè)內(nèi)容的,返回nil
//怎么求table的長(zhǎng)度呢
獲取數(shù)組的長(zhǎng)度
對(duì)于一個(gè)數(shù)組我們通??梢允褂?和table.getn來(lái)獲取其長(zhǎng)度
tabletest = {1,2,3,5,7}
print(table.getn(tabletest)) ------》5
print(#tabletest) ------》5
- 1
- 2
- 3
使用這兩種方法都能得到這個(gè)數(shù)組的長(zhǎng)度,但是如果
tabletest = {1,2,nil,3,5,7}
print(table.getn(tabletest)) ------》2
print(#tabletest) ------》2
- 1
- 2
- 3
發(fā)現(xiàn)不能獲得我們數(shù)組真正的長(zhǎng)度,這是因?yàn)閿?shù)組默認(rèn)遇到nil便被判斷為數(shù)組結(jié)束,所以最好不要用#和table.getn來(lái)獲取包含有nil的數(shù)組長(zhǎng)度
獲取table的長(zhǎng)度
對(duì)于table來(lái)說(shuō),如果他不是數(shù)組,我們使用#和table.getn是不能獲取它的長(zhǎng)度的
tabletest = {a=1,b=2,c=3,e=5,f=7}
print(table.getn(tabletest)) ------》0
print(#tabletest) ------》0
- 1
- 2
- 3
我們可以使用pairs來(lái)獲取?
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
注意#只能獲取索引為連續(xù)數(shù)字的長(zhǎng)度,如果不連續(xù),只能獲取到連續(xù)的地方,其他地方被舍棄
總結(jié)
以上是生活随笔為你收集整理的lua 求table长度和判断空的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 网络抓包工具 wireshark教程
- 下一篇: lua之弱引用table