濮阳杆衣贸易有限公司

主頁 > 知識庫 > Lua 中 pairs 和 ipairs 的區(qū)別

Lua 中 pairs 和 ipairs 的區(qū)別

熱門標簽:個人怎么在地圖標注需要的店鋪 新岸線智能電銷機器人 怎么去除地圖標注 地圖標注大廈 冀州市地圖標注 武漢外呼防封系統(tǒng)多少錢 百度地圖標注早餐區(qū)域 漳州智云呼電話機器人 清朝地圖標注哈爾濱

官方文檔上的說明:

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,只能返回數(shù)字0,如果遇到nil則退出。它只能遍歷到表中出現(xiàn)的第一個不是整數(shù)的key

下面舉個例子

復(fù)制代碼 代碼如下:

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

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

復(fù)制代碼 代碼如下:

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

那么,如果是

復(fù)制代碼 代碼如下:

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

則會輸出所有:

復(fù)制代碼 代碼如下:

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

現(xiàn)在改變一下表內(nèi)容:

復(fù)制代碼 代碼如下:

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

現(xiàn)在的輸出結(jié)果顯而易見就是key=1時的value值test1

復(fù)制代碼 代碼如下:

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

復(fù)制代碼 代碼如下:

-- [[示例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的區(qū)別總結(jié)

標簽:天門 天門 濰坊 宣城 臺灣 儋州 德宏 金昌

巨人網(wǎng)絡(luò)通訊聲明:本文標題《Lua 中 pairs 和 ipairs 的區(qū)別》,本文關(guān)鍵詞  Lua,中,pairs,和,ipairs,的,區(qū)別,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Lua 中 pairs 和 ipairs 的區(qū)別》相關(guān)的同類信息!
  • 本頁收集關(guān)于Lua 中 pairs 和 ipairs 的區(qū)別的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    景宁| 沂水县| 溧水县| 金平| 谢通门县| 临洮县| 留坝县| 潮安县| 余江县| 登封市| 桃园县| 宁远县| 安吉县| 辽阳市| 石棉县| 房产| 江陵县| 澳门| 新田县| 迁西县| 崇仁县| 阳春市| 澜沧| 和林格尔县| 临猗县| 张家川| 淳化县| 紫阳县| 腾冲县| 四会市| 海宁市| 正定县| 台山市| 奉新县| 临夏县| 甘洛县| 高密市| 子洲县| 和政县| 文安县| 湖州市|