這篇文章主要介紹“l(fā)ua中怎么求table的長(zhǎng)度”,在日常操作中,相信很多人在lua中怎么求table的長(zhǎng)度問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”lua中怎么求table的長(zhǎng)度”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!
取長(zhǎng)度操作符寫作一元操作#。字符串的長(zhǎng)度是它的字節(jié)數(shù)(就是以一個(gè)字符一個(gè)字節(jié)計(jì)算的字符串長(zhǎng)度)。
tablet的長(zhǎng)度被定義成一個(gè)整數(shù)下標(biāo)n。它滿足t[n]不是nil而t[n+1]為nil;此外,如果t[1]為nil,n就可能是零。對(duì)于常規(guī)的數(shù)組,里面從1到n放著一些非空的值的時(shí)候,它的長(zhǎng)度就精確的為n,即最后一個(gè)值的下標(biāo)。如果數(shù)組有一個(gè)"空洞"(就是說(shuō),nil值被夾在非空值之間),那么#t可能是指向任何一個(gè)是nil值的前一個(gè)位置的下標(biāo)(就是說(shuō),任何一個(gè)nil值都有可能被當(dāng)成數(shù)組的結(jié)束)。
localtblTest2=
{
1,
a=2,
3,
}
print(table.getn(tblTest2))
這段代碼輸出的結(jié)果是多少?這里的輸出結(jié)果應(yīng)該是2。首先,要明白,這個(gè)ctblTest2c不是一個(gè)簡(jiǎn)單的ctable,它混合了列表(list)和記錄(record)兩種風(fēng)格,表中,a=2是record風(fēng)格。其次,要明白,record風(fēng)格的record是不作為外表的長(zhǎng)度計(jì)算。你可以把它想象成一個(gè)函數(shù),跟其他面向?qū)ο笳Z(yǔ)言一樣,函數(shù)是不記為內(nèi)部變量的。
既然像函數(shù)一樣,那就可以輸出a的值,是的。print(tblTest2.a)就可以了。
以下情況相當(dāng)糾結(jié),可直接看最后一句話總結(jié):
現(xiàn)在來(lái)看一個(gè)比較糾結(jié)的:
localtblTest4=
{
1,
nil,
}
print(table.getn(tblTest4))
這段代碼輸出的結(jié)果是多少?是1。我們都知道table獲取長(zhǎng)度的時(shí)候,會(huì)遍歷一下整個(gè)表,在最后一個(gè)非nil處,就會(huì)返回。
如果你繼續(xù)往后面加nil,你可能會(huì)發(fā)現(xiàn)點(diǎn)什么。你可能認(rèn)為你發(fā)現(xiàn)的是個(gè)規(guī)律。但是,你千萬(wàn)不要認(rèn)為這是個(gè)規(guī)律。因?yàn)檫@是錯(cuò)誤的。
1、在table中不要使用nil
2、如果非要使用nil,必須用table.setn()函數(shù)去設(shè)置這個(gè)table表的長(zhǎng)度。注意:新版本的lua已經(jīng)不支持setn了。
setn函數(shù)已過(guò)時(shí),不要在lua的table中使用nil值,如果一個(gè)元素要?jiǎng)h除,直接remove,不要用nil去代替。
到此,關(guān)于“l(fā)ua中怎么求table的長(zhǎng)度”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!
網(wǎng)站標(biāo)題:lua中怎么求table的長(zhǎng)度-創(chuàng)新互聯(lián)
文章來(lái)源:http://www.rwnh.cn/article28/djhdcp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、云服務(wù)器、企業(yè)建站、網(wǎng)頁(yè)設(shè)計(jì)公司、靜態(tài)網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容
網(wǎng)頁(yè)設(shè)計(jì)公司知識(shí)