Lua迭代器的實現

2021-09-10 21:41:30 字數 503 閱讀 3407

lua迭代器才有放回個函式的方法,for in的結構會迴圈呼叫該函式,直到第乙個放回值為nil時,就會終止迴圈。

其中迭代器中的函式會利用upvalue的概念,如下面**,變數i就是放回函式的upvalue,返回函式體中不斷的對i變數做+1處理,i的值就是從0,1,2,3不斷的往上加的。

local iter = function (tb)

local i = 0

return function ()

i = i + 1

if not tb[i] then

return nil

endreturn i, tb[i]

endendlocal x =

for i, v in iter(x) then

print(i, v)

end

上面**執行的結果是

1 10

2 11

3 12

4 13

5 14

Lua中的迭代器

1 lua標準庫中提供了4種常用的迭代器 1 用於迭代檔案中每行的io.lines 2 迭代字串中單詞的string.gmatch 3 迭代table元素的pairs 4 迭代陣列元素的iparis 相對於數字型for迴圈,後兩者又稱為泛型for迴圈 2 pairs與ipairs paris遍歷ta...

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