--迭代器:在Lua中常使用函數來描述迭代器,每次調用該函數返回集合的下一個元素。迭代函數、狀態常量、控制變量3部分組成
arr1={"z","b"}
for k,v in pairs(arr1)
do
print(k,v)
end
print()
--無狀態的迭代器:指不保留任何狀態的迭代器,因此在循環中我們可以利用無狀態迭代器避免創建閉包花費的額外代價
--square-迭代函數 max-狀態常量 curNum-控制變量
function square(max,curNum)
if(curNum<max)
then
curNum=curNum+1
return curNum,curNum*curNum
end
end
for i,n in square,3,0
do
print(i,n)
end
print()
--多狀態的迭代器:很多情況下,迭代器需要保存多個狀態信息而不是簡單的狀態常量和控制變量,最簡單的方法是使用閉包;這樣的迭代函數不需要控制變量這個參數
array = {"Python","C#"}
function Iterator(collecttion)
local index=0
local count=#collecttion
--閉包函數
return function()
index = index+1
if(index<=count)
then
return collecttion[index]
end
end
end
for element in Iterator(array)
do
print(element)
end
lua-迭代器
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.