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实战 | 一文带你搞懂从单队列到优先
