亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > 綜合 > 正文

Lua中獲取table長度問題探討

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

又有同事在lua的table長度問題上犯錯了,我們一起來看看吧~~~

看以下代碼:

 

復制代碼 代碼如下:

local tblTest1 = 

    1, 
    2, 
    3 

 
print(table.getn(tblTest1)) 

這段代碼輸出的結果是3,這個大家都知道,是吧。不管最后那個3后面有沒有加逗號,結果都是3。

 

再看下面的代碼:

 

復制代碼 代碼如下:

local tblTest2 = 

    1, 
    a = 2, 
    3, 

 
print(table.getn(tblTest2)) 

這段代碼輸出的結果是多少?這里的輸出結果應該是2。首先,要明白,這個tblTest2不是一個簡單的table,它混合了列表(list)和記錄(record)兩種風格,表中,a = 2是record風格。其次,要明白,record風格的record是不作為外表的長度計算(key值無法對應索引位置的才不計算)。你可以把它想象成一個函數,跟其他面向對象語言一樣,函數是不記為內部變量的。
既然像函數一樣,那就可以輸出a的值,是的。print(tblTest2.a)就可以了。

 

key值對應索引,key值可以對應索引的比如像下面這個:

復制代碼 代碼如下:

local tblTest =
{
    [1] = 2,
    [2] = 3,
    [3] = 10,
}
print(table.getn(tblTest))

[1],[2],[3]可以對應索引位置,所以輸出3,如果key值不能對應索引,那么結果往往是錯的,比如:
復制代碼 代碼如下:

local tblTest =
{
 [1] = 2,
 [2] = 5,
 [4] = 10,
}
print(table.getn(tblTest))

 

上面這個代碼的輸出結果是4,但是下面的這個是2,

 

復制代碼 代碼如下:

local tblTest =
{
 [1] = 2,
 [2] = 5,
 [5] = 10,
}
print(table.getn(tblTest))

 

 


另外,還有一種混搭風格,比如

 

 

復制代碼 代碼如下:

local tblTest =
{
 2,
 [3] = 2,
 4,
}
print(table.getn(tblTest))

 

 

 

3與[3]可以混搭,所以,這里輸出的結果是3

還有一個規則,就是當用列表風格的時候,每次都是先尋找[1]所在的位置然后才開始計算的。。。。其實可以理解為先找到1,然后排序,之后再計算長度~~~

建議不要在table中混合recrod和list風格,然后計算長度,除非你對他們之間的規則非常清楚,另外,列表風格中的key如果不是數字,也不會進行計算~~~
再看下面的代碼:

復制代碼 代碼如下:

local tblTest3 =
{
    1,
    {a = 2},
    3,
}

 

print(table.getn(tblTest3))

 

這段代碼輸出的結果是多少?這里的輸出結果應該是3。要注意,表嵌套表,嵌套表也是元素。所以,輸出的結果是3。
以下情況相當糾結,可直接看最后一句話總結:

現在來看一個比較糾結的:

復制代碼 代碼如下:

local tblTest4 =
{
    1,
    nil,
}

 

print(table.getn(tblTest4))

 

這段代碼輸出的結果是多少?是1。我們都知道table獲取長度的時候,會遍歷一下整個表,在最后一個非nil處,就會返回。
但是,下面這段代碼呢?

復制代碼 代碼如下:

local tblTest5 =
{
    1,
    nil,
    2,
}

 

print(table.getn(tblTest5))

 

上面這段代碼,結果如下:

Lua,獲取table長度

好玩吧?它把nil也當成元素計算長度了。但叫你摸不著頭腦的是下面這段代碼:

Lua,獲取table長度

看到沒,這段代碼的結果是1。再發一段,讓你完全蒙掉:

Lua,獲取table長度

看,這段代碼輸出結果是3,蒙了沒?再看,這一段叫你以后再也不敢再table中寫nil值:

Lua,獲取table長度

看看吧,這一段的輸出結果是1。親,請問,你以后還敢在lua的table中用nil值嗎???如果你繼續往后面加nil,你可能會發現點什么。你可能認為你發現的是個規律。但是,你千萬不要認為這是個規律。因為這是錯誤的。

1、在table中不要使用nil

2、如果非要使用nil,必須用table.setn()函數去設置這個table表的長度。注意:新版本的lua已經不支持setn了。

必須給你個結論:

setn函數已過時,不要在lua的table中使用nil值,如果一個元素要刪除,直接remove,不要用nil去代替。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲黄色成人网| 美女国内精品自产拍在线播放| 久久久久国产精品一区| 国产成人在线一区| 秋霞午夜一区二区| 久久久久五月天| 日韩视频亚洲视频| 中文字幕亚洲无线码a| 成人免费午夜电影| 日韩美女在线播放| 成人久久精品视频| 97超碰色婷婷| 亚洲国产毛片完整版| 国产一区二区久久精品| 日韩av免费看网站| 亚洲国产日韩欧美在线图片| 国产视频精品va久久久久久| 青青在线视频一区二区三区| 亚洲精品网站在线播放gif| 日韩视频精品在线| 这里精品视频免费| 欧美成人剧情片在线观看| 国产做受高潮69| www国产精品视频| 成人高清视频观看www| 另类少妇人与禽zozz0性伦| 国产精品视频永久免费播放| 精品视频在线播放免| 国产精品吴梦梦| 欧美肥老太性生活视频| 日韩欧美一区二区三区久久| 欧美最猛性xxxxx免费| 久久成人av网站| 在线视频中文亚洲| 97免费中文视频在线观看| 中文字幕欧美专区| 97超视频免费观看| 伊人伊成久久人综合网站| 亚洲的天堂在线中文字幕| 国产97人人超碰caoprom| 日韩视频中文字幕| 欧美午夜丰满在线18影院| 欧美激情精品久久久久久大尺度| 国产精品揄拍500视频| 在线电影中文日韩| 国产精品99久久久久久久久| 91精品免费看| 九九热在线精品视频| 亚洲电影av在线| 国产精品mp4| 日韩欧美福利视频| 欧美激情亚洲国产| 丝袜美腿亚洲一区二区| 亚洲第一视频网站| 色妞一区二区三区| 精品magnet| 中文字幕日韩av| 国产精品一区二区三区久久久| 456国产精品| 久久琪琪电影院| 成人国产在线激情| 久久免费少妇高潮久久精品99| 亚洲黄色免费三级| 精品视频久久久久久久| 精品呦交小u女在线| 欧美激情国产精品| 亚洲国内精品在线| 日韩成人小视频| 亚洲欧洲偷拍精品| 亚洲精品视频在线播放| 国产噜噜噜噜噜久久久久久久久| 久久国产精品亚洲| 精品国内自产拍在线观看| 亚洲国产成人久久综合一区| 久久这里只有精品视频首页| 国产福利视频一区| 久久免费视频这里只有精品| 欧美电影在线观看高清| 国产成人a亚洲精品| 久久91亚洲精品中文字幕奶水| 久久视频国产精品免费视频在线| 91精品国产亚洲| 国产精品成av人在线视午夜片| 亚洲一区亚洲二区亚洲三区| 亚洲欧美日韩视频一区| 欧美人在线视频| 亚洲国产精品999| 国产精品直播网红| 亚洲视频在线观看视频| 国产精品aaaa| 欧美成人激情图片网| 欧美在线视频观看| 中文字幕欧美视频在线| 欧美日韩黄色大片| 亚洲福利在线观看| 超碰91人人草人人干| 日韩国产在线看| 日本一区二区在线免费播放| 国产精品亚洲第一区| 5278欧美一区二区三区| 色综合老司机第九色激情| 色老头一区二区三区在线观看| 欧美日韩加勒比精品一区| 国产一区二区三区在线看| 欧美一区二区大胆人体摄影专业网站| 亚洲精品福利在线| 欧美激情性做爰免费视频| 亚洲综合精品伊人久久| 日韩av在线一区二区| 欧美性猛交xxxxx免费看| 日韩少妇与小伙激情| 亚州精品天堂中文字幕| 亚洲美女av在线播放| 欧美性猛交xxxx久久久| 欧洲成人在线视频| 日韩欧美a级成人黄色| 亚洲欧洲国产精品| 69视频在线免费观看| 欧美综合国产精品久久丁香| 欧美激情一区二区三区高清视频| 亚洲成人激情在线观看| 欧美xxxx做受欧美.88| 成人亚洲欧美一区二区三区| 国产精品旅馆在线| 欧美激情精品久久久久久变态| 国产亚洲欧洲高清一区| 久久99青青精品免费观看| 超碰精品一区二区三区乱码| 欧美一级成年大片在线观看| 日韩欧美精品中文字幕| 日韩中文字幕国产精品| 麻豆国产精品va在线观看不卡| 久久久久久久久久国产| 青草青草久热精品视频在线观看| 国产精品高潮呻吟久久av无限| 欧美电影在线观看完整版| 日韩欧美黄色动漫| 俺去了亚洲欧美日韩| 亚洲国产中文字幕在线观看| 视频在线一区二区| 91社区国产高清| 2019中文字幕免费视频| 日韩视频在线免费| 久久久999成人| 国产精品偷伦视频免费观看国产| 九九热99久久久国产盗摄| 亚洲自拍另类欧美丝袜| 日本成人在线视频网址| 亚洲色图偷窥自拍| 亚洲精品av在线| 亚洲老板91色精品久久| 日韩美女在线观看一区| 日韩精品视频免费专区在线播放| 久久亚洲精品网站| 欧美激情亚洲激情| 草民午夜欧美限制a级福利片| 不卡av电影院| 久久久久久免费精品| 国产精品第2页| 国产精品福利网| 亚洲电影免费观看高清完整版在线| 97**国产露脸精品国产| 欧美床上激情在线观看| 91啪国产在线|