Lua基礎 迭代器

2021-09-23 01:22:12 字數 1450 閱讀 6374

官方的文件說:

迭代器(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需要的三個值 迭代...