校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > Lua 中 pairs 和 ipairs 的區別

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 的區別》,本文關鍵詞  Lua,中,pairs,和,ipairs,的,區別,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Lua 中 pairs 和 ipairs 的區別》相關的同類信息!
  • 本頁收集關于Lua 中 pairs 和 ipairs 的區別的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 赤水市| 汨罗市| 丰镇市| 玛曲县| 元谋县| 乳山市| 灵武市| 玉溪市| 苏尼特左旗| 庆城县| 镇原县| 和田市| 乌鲁木齐市| 边坝县| 泰安市| 环江| 淮北市| 刚察县| 仁寿县| 肃南| 竹山县| 买车| 宿松县| 偃师市| 张家口市| 龙南县| 渭南市| 紫阳县| 古交市| 军事| 双柏县| 洱源县| 上饶市| 安岳县| 闸北区| 南汇区| 化州市| 西畴县| 洪洞县| 蛟河市| 修武县|