官方的文檔說:
迭代器(iterator)是一種對象,它能夠用來遍歷標準模板庫容器中的部分或全部元素,每個迭代器對象代表容器中的確定的地址
在Lua中迭代器是一種支持指針類型的結構,它可以遍歷集合的每一個元素。
迭代器的種類主要有:泛型for迭代器、無狀態的迭代器、多狀態的迭代器
下面看幾個例子:
ipairs.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
name = {"YYX","HJZ"}; --以下稱為泛型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 ; end end --輸出迭代函數的值,i表示迭代次數,n表示迭代后的數值 for i , n in NumAdd,5,0 do print(i,n); end array = {1,2,3,4,5,6,7,8,9,10}; function array_put(length , var) --獲取Array的長度 length = #array ; --如果傳入需要遍歷的值小于Array的長度,就遍歷 if(var < length) then var = var + 1 ; return var , array[var] ; end end for 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
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對服務器之家的支持。如果你想了解更多相關內容請查看下面相關鏈接
原文鏈接:https://blog.csdn.net/morixinguan/article/details/75305406