一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Lua - Lua 中 pairs 和 ipairs 的區別

Lua 中 pairs 和 ipairs 的區別

2020-04-13 11:00腳本之家 Lua

這篇文章主要介紹了Lua 中 pairs 和 ipairs 的區別,本文用官方文檔和代碼實例總結了它的們的區別,需要的朋友可以參考下

官方文檔上的說明:

ipairs (t)

Returns three values: an iterator function, the table t, and 0, so that the construction

for i,v in ipairs(t) do body end

will iterate over the pairs (1,t[1]), (2,t[2]), ···, up to the first integer key absent from the table.

pairs (t)

Returns three values: the next function, the table t, and nil, so that the construction

for k,v in pairs(t) do body end

will iterate over all key–value pairs of table t.

See function next for the caveats of modifying the table during its traversal.

這樣就可以看出 ipairs以及pairs 的不同。pairs可以遍歷表中所有的key,并且除了迭代器本身以及遍歷表本身還可以返回nil;但是ipairs則不能返回nil,只能返回數字0,如果遇到nil則退出。它只能遍歷到表中出現的第一個不是整數的key

下面舉個例子

 

復制代碼 代碼如下:

local tabFiles = {  
[3] = "test2",  
[6] = "test3",  
[4] = "test1" 
}  
for k, v in ipairs(tabFiles) do 
    print(k, v)  
end 

 

猜測它的輸出結果是什么呢?根據剛才的分析,它在 ipairs(tabFiles) 遍歷中,當key=1時候value就是nil,所以直接跳出循環不輸出任何值。

 

復制代碼 代碼如下:

>lua -e "io.stdout:setvbuf 'no'" "test.lua" 
>Exit code: 0 

 

那么,如果是

 

復制代碼 代碼如下:

for k, v in pairs(tabFiles) do 
    print(k, v)  
end 

 

則會輸出所有:

 

復制代碼 代碼如下:

>lua -e "io.stdout:setvbuf 'no'" "test.lua"   
3 test2  
6 test3  
4 test1  
>Exit code: 0 

 

現在改變一下表內容:

 

復制代碼 代碼如下:

local tabFiles = {  
[1] = "test1",  
[6] = "test2",  
[4] = "test3" 
}  
 
for k, v in ipairs(tabFiles) do 
    print(k, v)  
end 

 

現在的輸出結果顯而易見就是key=1時的value值test1

 

復制代碼 代碼如下:

>lua -e "io.stdout:setvbuf 'no'" "test.lua"   
1 test1  
>Exit code: 0 

 

 

復制代碼 代碼如下:

-- [[示例1.]] --  
local tt =  
{  
    [1] = "test3",  
    [4] = "test4",  
    [5] = "test5" 
}  
 
for i,v in pairs(tt) do     -- 輸出 "test4" "test3" "test5" 
    print( tt[i] )  
end  
 
for i,v in ipairs(tt) do    -- 輸出 "test3" k=2時斷開  
    print( tt[i] )  
end  
 
-- [[示例2.]] --  
tbl = {"alpha", "beta", [3] = "uno", ["two"] = "dos"}  
 
for i,v in ipairs(tbl) do    --輸出前三個  
    print( tbl[i] )  
end  
 
for i,v in pairs(tbl) do    --全部輸出  
    print( tbl[i] )  
end 

 

Lua 中 pairs 和 ipairs 的區別

Lua 中 pairs 和 ipairs 的區別

延伸 · 閱讀

精彩推薦
  • LuaLua中計算、執行字符串中Lua代碼的方法

    Lua中計算、執行字符串中Lua代碼的方法

    這篇文章主要介紹了Lua中計算、執行字符串中Lua代碼的方法,類似JavaScript中eval函數的功能,在Lua中也可以實現,需要的朋友可以參考下 ...

    腳本之家6322020-04-30
  • LuaLua和C語言的交互詳解

    Lua和C語言的交互詳解

    這篇文章主要介紹了Lua和C語言的交互詳解,Lua和C語言通過棧完成交互,本文結合代碼實例詳細講解了交互的方法,需要的朋友可以參考下 ...

    果凍想3702020-04-14
  • Lua深入探究Lua中的解析表達式

    深入探究Lua中的解析表達式

    這篇文章主要介紹了深入探究Lua中的解析表達式,對于其語法部分的說明和示例都超詳細,極力推薦此文!需要的朋友可以參考下 ...

    腳本之家3542020-05-05
  • LuaLua中的元方法__newindex詳解

    Lua中的元方法__newindex詳解

    這篇文章主要介紹了Lua中的元方法__newindex詳解,本文講解了查詢與更新、監控賦值、通過table給另一個table賦值等內容,需要的朋友可以參考下 ...

    笨木頭8872020-04-09
  • LuaLua中table庫函數方法介紹

    Lua中table庫函數方法介紹

    這篇文章主要介紹了Lua中table庫函數方法介紹,本文講解了concat、insert、maxn、remove、sort、foreachi等方法,需要的朋友可以參考下 ...

    腳本之家2502020-04-17
  • LuaLua教程(二):基礎知識、類型與值介紹

    Lua教程(二):基礎知識、類型與值介紹

    這篇文章主要介紹了Lua教程(二):基礎知識、類型與值介紹,本文講解了Hello World程序、代碼規范、全局變量、類型與值等內容,需要的朋友可以參考下 ...

    腳本之家5922020-04-28
  • LuaLua簡介、編譯安裝教程及變量等語法介紹

    Lua簡介、編譯安裝教程及變量等語法介紹

    這篇文章主要介紹了Lua簡介、編譯安裝教程及變量等語法介紹,本文同時講解了lua注釋語法、Lua命令行方式等內容,需要的朋友可以參考下 ...

    junjie3632020-04-14
  • LuaLua實現__add方法重載示例

    Lua實現__add方法重載示例

    這篇文章主要介紹了Lua實現__add方法重載示例,本文直接給出實現代碼,需要的朋友可以參考下 ...

    腳本之家7452020-04-24
主站蜘蛛池模板: 亚洲精品免费在线 | 色淫阁小说 | 91精品国产高清久久久久久 | 四虎永久 | 99久久精品国语对白 | 成人精品在线 | 亚洲乱码尤物193yw在线播放 | 美女机机对机机的视频(免费) | 午夜在线观看视频 | 女教师系列三上悠亚在线观看 | 欧美日本一道高清二区三区 | 亚洲国产剧情中文视频在线 | 免费抽搐一进一出印度 | 亚洲AV精品无码喷水直播间 | 欧美ggg666 | 楚乔传第二部免费观看全集完整版 | www.av在线视频| 爱色成人网 | 国产果冻传媒 | 91精品乱码一区二区三区 | 国内自拍视频在线观看 | 日本破处 | 日本老妇人乱视频 | 天天快乐在线观看 | 美女gif跪趴式抽搐动态图 | 国产成人lu在线视频 | 香蕉国产人午夜视频在线 | 精品国产区 | 大陆国语自产精品视频在 | 女王厕便器vk | 国产在视频线精品视频 | 日本xxxxx69hd日本 | 欧美日一级片 | 日韩视频在线观看中字 | 91精品国产亚洲爽啪在线影院 | 果冻传媒 天美 麻豆 | bt7086新片速递亚洲最新合集 | 冰山美人调教耻辱h | 国产成人免费片在线视频观看 | 乖女的嫩奶水h文孕妇 | 99久久免费国产精品热 |