国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

Lua判斷Table是否為空的方法(空的table即{})

2024-07-21 23:04:28
字體:
來源:轉載
供稿:網友

判斷方法結論:

復制代碼 代碼如下:

a={}
if next(a) ~=nil then dosomething end

 

    最近在項目里面大量使用的lua,其中lua的table是lua中重要的數據結構,可以被用來當做C++中的數組,vector,map來使用。

    如何判斷lua中的table是否是空的table呢?

    一開始我沒動腦子,是這樣寫的:

復制代碼 代碼如下:

a={}
if a ==nil then dosomething end

    這個方法錯誤是顯而易見的,在lua中a其實是一個指針,指向了table的結構,所以這個方法其實是比較地址是否為空,顯然錯了。

 

    之后我改進了下,代碼如下:

復制代碼 代碼如下:

a={}
if a=={} then dosomething end

    仔細一看上面的改進,相當于沒改,這里的a指針比較的還是一個匿名的地址,肯定是false。

 

    之后我這樣想,空table的size肯定為0,那我直接判斷表的大小不就完了嘛,于是我借助#操作符,代碼改進為:

復制代碼 代碼如下:

a={}
if #a==0 then dosomething end

    但是問題來了,#操作符要求table中的項都不為nil,悲??!之后我想到了table.maxn內置函數,于是代碼繼續改成:
復制代碼 代碼如下:

a={}
if table.maxn(a) == 0 then dosomething end

    不容易啊,程序可以跑了,但是查閱了下相關資料,maxn函數是根據每一項的hash來判斷的,這樣寫代碼也很保險,除非你的table是全數字的鍵。

 

    最后才想起用泛型方法遍歷一個table時使用的內置next函數,代碼改進如下:

復制代碼 代碼如下:

a={}
if next(a) ~=nil then dosomething end
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 正定县| 晋中市| 台湾省| 饶河县| 上思县| 柘荣县| 教育| 淳安县| 南和县| 环江| 治县。| 陈巴尔虎旗| 阿巴嘎旗| 拜泉县| 霍林郭勒市| 芦溪县| 灵丘县| 南汇区| 迁西县| 黔西| 柳江县| 疏勒县| 宜君县| 平远县| 鹰潭市| 清涧县| 资溪县| 湛江市| 葵青区| 仙居县| 博罗县| 佛山市| 璧山县| 哈巴河县| 建瓯市| 玉山县| 太仆寺旗| 论坛| 沾益县| 桐乡市| 丰都县|