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