新聞中心
直入主題
我們要取lua table的長度時習(xí)慣這樣
local tb = {1,2,3,4} print(#tb)
這時候,輸出理所當(dāng)然的是4,如果在程序中我們需要判斷長度時使用這樣的方法,再看一下
tb[1] = nil print(#tb)
輸出還是4,似乎有點背離我們的意愿
我們想知道這個table里面是不是有4個值,但是有一個值被置空了,輸出結(jié)果卻沒有及時告訴我們
發(fā)生這樣問題的原因是,lua在初始化table的時候,會給這個table分配值存儲的空間,代碼里面tb初始化包含4個數(shù)字值,然后對第一個值置空,但是分配出去的空間依然存在。說到這里,已經(jīng)有人明白了,"#"取的是table分配出的空間,稍稍偏離了實際邏輯的需求,看這樣的代碼
local tb = {nil,nil,nil,nil} print(#tb)
輸出是0
因為lua碰到nil,先不分配空間,所以#tb自然也就是0
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
網(wǎng)站標(biāo)題:Luatable的長度問題-創(chuàng)新互聯(lián)
網(wǎng)站地址:http://www.dlmjj.cn/article/ccjgph.html