日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Lua——迭代器的使用、pairs 和 ipairs区别

發(fā)布時(shí)間:2023/12/14 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Lua——迭代器的使用、pairs 和 ipairs区别 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

--迭代器是一種可以便利一種集合中所有元素得機(jī)制
--lua中,迭代器表示為函數(shù),每調(diào)用一次函數(shù),即返回集合中得下一個(gè)元素

--主要是根據(jù)閉合函數(shù)來(lái)實(shí)現(xiàn)得:閉合函數(shù):一個(gè)函數(shù)加上該函數(shù)所需要訪問(wèn)得所有“非全局變量“

--迭代器內(nèi)部實(shí)現(xiàn)
function DieDai(t)
?? ?local i=0;
?? ?return function()
?? ??? ?i=i+1
?? ??? ?return t[i]
?? ?end
end

--使用方式1
t={"11","22","3","5333"}

local it=DieDai(t)
while true do
?? ?local value=it()
?? ?if value==nil then
?? ??? ?break
?? ?end
?? ?print(value)
end
print("-------------------------")
--使用方式2
for value in DieDai(t) do
?? ?print(value)
end
print("-------------------------")
--返回兩個(gè)值得迭代器
function DieDai2(t)
?? ?local i=0;
?? ?return function()
?? ??? ?i=i+1
?? ??? ?if i>#t then
?? ??? ??? ?return nil;
?? ??? ?end
?? ??? ?return i,t[i];
?? ?end
end

for value1,value2 in DieDai2(t) do
?? ?print(value1..value2)
end
?

pairs 和 ipairs區(qū)別

同:都是能遍歷集合(表、數(shù)組)

異:ipairs 僅僅遍歷值,按照索引升序遍歷,索引中斷停止遍歷。即不能返回 nil,只能返回?cái)?shù)字 0,如果遇到 nil 則退出。它只能遍歷到集合中出現(xiàn)的第一個(gè)不是整數(shù)的 key。

pairs 能遍歷集合的所有元素。即 pairs 可以遍歷集合中所有的 key,并且除了迭代器本身以及遍歷表本身還可以返回 nil

總結(jié)

以上是生活随笔為你收集整理的Lua——迭代器的使用、pairs 和 ipairs区别的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。