婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 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 的區別的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 娱乐| 汝南县| 呼图壁县| 仙居县| 巴青县| 北票市| 海丰县| 丹阳市| 屏山县| 墨脱县| 新兴县| 梅州市| 许昌县| 谷城县| 来宾市| 塔城市| 明水县| 介休市| 迁西县| 五华县| 调兵山市| 巴彦县| 阿拉尔市| 龙川县| 密云县| 岗巴县| 瓦房店市| 洛川县| 牙克石市| 昆山市| 丰宁| 张家界市| 乐亭县| 龙陵县| 连云港市| 柏乡县| 石河子市| 中卫市| 栾川县| 正安县| 迁西县|