lua迭代器原理

2021-07-27 23:33:18 字數 534 閱讀 3368

當lua呼叫for迴圈中的ipairs(a)時,它會獲得三個值:迭代器函式iter、恆定狀態a和控制變數的處置0。然後lua呼叫iter(a,0),得到1,a[1]。在第二次迭代中,繼續呼叫iter(a,1),得到2,a[2],依次類推,直到得到的第乙個nil元素為止。pairs與ipairs類似,也是用於遍歷乙個table中的所有元素。不同的是,它的迭代器函式是lua中的乙個基本函式next。

local function iter(a,i)

i=i+1

local v=a[i]

if v then

return i,v

endendlocal function ipairsss(a)

return iter,a,0

endlocal function pairsss(a)

return next,a,nil

endlocal b=

for i,v in pairsss(b) do

print(i,v)

end

Lua 迭代器初學

和c 類似,lua也有迭代器,如汎型for。泛型for需要三個值 迭代函式 狀態常量 控制變數 乙個典型的泛型for如下 for k,v in pairs t do print k,v end 泛型for的執行過程 首先,初始化,計算 in 後面表示式的值,表示式應該返回泛型for需要的三個值 迭代...

Lua基礎 迭代器

官方的文件說 迭代器 iterator 是一種物件,它能夠用來遍歷標準模板庫容器中的部分或全部元素,每個迭代器物件代表容器中的確定的位址 在lua中迭代器是一種支援指標型別的結構,它可以遍歷集合的每乙個元素。迭代器的種類主要有 泛型for迭代器 無狀態的迭代器 多狀態的迭代器 下面看幾個例子 ipa...

Lua程式設計 迭代器

迭代器 一種可以遍歷乙個集合中所有元素的 結構 函式表述迭代器 每一次呼叫 函式就會返回集合的下乙個元素 所有迭代器都需要在連續呼叫之間儲存一些狀態 知道當前所處位置以及如何從當前位置到下一步位置 自定義迭代器 閉包為儲存狀態提供了一種良好的機制 閉包就是乙個可以訪問其自身環境中乙個或者多個區域性變...