lua-迭代器

--迭代器:在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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章