官方的文件說:
迭代器(iterator)是一種物件,它能夠用來遍歷標準模板庫容器中的部分或全部元素,每個迭代器物件代表容器中的確定的位址
在lua中迭代器是一種支援指標型別的結構,它可以遍歷集合的每乙個元素。
迭代器的種類主要有:泛型for迭代器、無狀態的迭代器、多狀態的迭代器
下面看幾個例子:
ipairs.lua
name = ;
--以下稱為泛型for迭代器
--其中key表示索引值,從1開始計算
--value表示陣列中的元素
--ipairs表示迭代函式
for key,value in ipairs(name) do
print(key,value);
end--實現乙個自加演算法無狀態的迭代函式
function numadd(count,var)
--定義乙個區域性變數_count並初始化為0
local _count = 0 ;
--引數count表示該函式需要迭代的次數
--其實這裡的思路有點像c的遞迴
--實現遞迴需要有條件退出,有始有終
if(var < count)
then
var = var + 1 ;
return var , var + _count ;
endend
--輸出迭代函式的值,i表示迭代次數,n表示迭代後的數值
for i , n in numadd,5,0
do print(i,n);
endarray = ;
function array_put(length , var)
--獲取array的長度
length = #array ;
--如果傳入需要遍歷的值小於array的長度,就遍歷
if(var < length)
then
var = var + 1 ;
return var , array[var] ;
end
endfor i , n in array_put,10,0
do print(i,n);
end
解釋執行:
lua ipairs.lua
執行結果:
1 yyx
2 hjz
1 1
2 2
3 3
4 4
5 5
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 10
Lua 基礎之迭代器
lua 陣列索引預設從1開始。可以指定0或者負數開始 例子一 local table for k,v in pairs table do print k,v 輸出所有 end for k,v in ipairs table do print k v 輸出前兩個 end例子二 local table ...
lua迭代器原理
當lua呼叫for迴圈中的ipairs a 時,它會獲得三個值 迭代器函式iter 恆定狀態a和控制變數的處置0。然後lua呼叫iter a,0 得到1,a 1 在第二次迭代中,繼續呼叫iter a,1 得到2,a 2 依次類推,直到得到的第乙個nil元素為止。pairs與ipairs類似,也是用於...
Lua 迭代器初學
和c 類似,lua也有迭代器,如汎型for。泛型for需要三個值 迭代函式 狀態常量 控制變數 乙個典型的泛型for如下 for k,v in pairs t do print k,v end 泛型for的執行過程 首先,初始化,計算 in 後面表示式的值,表示式應該返回泛型for需要的三個值 迭代...