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