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

主頁 > 知識庫 > 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 的區別的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 伽师县| 宣恩县| 定襄县| 潜山县| 丹江口市| 福海县| 涞源县| 宝坻区| 萨嘎县| 成武县| 新昌县| 讷河市| 虎林市| 乡城县| 太仆寺旗| 潍坊市| 钦州市| 云林县| 万全县| 永城市| 如皋市| 沧州市| 南部县| 普兰县| 兴山县| 微山县| 临夏县| 友谊县| 宣恩县| 玉树县| 汝州市| 芦山县| 邮箱| 大兴区| 澎湖县| 黄骅市| 体育| 余江县| 宿迁市| 南澳县| 扬州市|