Lua——迭代器的使用、pairs 和 ipairs区别
--迭代器是一種可以便利一種集合中所有元素得機制
--lua中,迭代器表示為函數,每調用一次函數,即返回集合中得下一個元素
--主要是根據閉合函數來實現得:閉合函數:一個函數加上該函數所需要訪問得所有“非全局變量“
--迭代器內部實現
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("-------------------------")
--返回兩個值得迭代器
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區別
同:都是能遍歷集合(表、數組)
異:ipairs 僅僅遍歷值,按照索引升序遍歷,索引中斷停止遍歷。即不能返回 nil,只能返回數字 0,如果遇到 nil 則退出。它只能遍歷到集合中出現的第一個不是整數的 key。
pairs 能遍歷集合的所有元素。即 pairs 可以遍歷集合中所有的 key,并且除了迭代器本身以及遍歷表本身還可以返回 nil。
總結
以上是生活随笔為你收集整理的Lua——迭代器的使用、pairs 和 ipairs区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 工作的驱动力——成就感
- 下一篇: Go实战 | 一文带你搞懂从单队列到优先