Lua初識之迭代器與閉包

2021-06-28 10:05:03 字數 1230 閱讀 9566

一、-- 迭代器與閉包

--迭代器是一種支援指標型別的結構,它可以遍歷集合的每乙個元素

--在lua中我們常常使用函式來描述迭代器,每次呼叫該函式就返回集

--合的下乙個元素

-- 寫乙個方法實現迭代

function list_iter(t)

local i = 0 --定義區域性變數 i

local n = table.getn(t) -- 定義區域性變數 n 獲取 table 中元素個

數 return function() -- 閉包,呼叫list_iter方法時返回該匿名函式

i = i + 1 -- 每次呼叫匿名函式 i 自加 1

if i <= n then --如果i 小於等於 table表 t 的項數 返回第i項

return t[i] --返回 table表 t 中的第i項

endend

end--定義table

t =

iter = list_iter(t) -- iter 獲取list_iter中的匿名函式

while true do

local element = iter() --呼叫匿名函式,返回table中個的下一項

-- 如果 獲取的項 element 為空,說明已經遍歷到了 table表 t的結尾

了,退出

if element == nil then

break

end--列印遍歷出來的 t 的項

print(element)

將 table表t中的所有項遍歷出來

-- 執行列印結果如下

二、function all()

-- 獲取一條輸入的字串

local line = io.read()

--定義標記位置pos開始為 1

local pos = 1

-- 返回匿名函式

return function()

while line do

line = io.read()

pos = 1

endend

--如果輸入為空則返回nil結束

return nil

endend-- 使用 for 呼叫迭代

for word in all() do

print(word)

end

Lua 迭代器和閉包

內容來自 lua程式設計 第四版 18.1節 迭代器和閉包。迭代器 iterator 是一種可以讓我們遍歷乙個集合中所有元素的 結構。在 lua 語言中,通常使用函式表示迭代器 每一次呼叫函式時,函式會返回集合中的 下乙個 元素。乙個典型的例子就是io.read,每次呼叫該函式時它都會返回標準輸入中...

閉包與迭代器

1.python內建函式 def compare args return max args min args a,b compare 1,2,3,4,5,6 print max min format a,b 2.若定義的函式引數為可變型別的變數,若果呼叫改變了此變數,其他可以看到此位置的變數也跟隨改...

Lua筆記11 迭代器和閉包

迭代器是一種支援指標型別的結構,它可以遍歷集合的每乙個元素。在lua中我們常常使用函式來描述迭代器,每次呼叫該函式就返回集合的下乙個元素。迭代器需要保留上一次成功呼叫的狀態和下一次成功呼叫的狀態,也就是他知道來自於 和將要前往 閉包提供的機制可以很容易實現這個任務。記住 閉包是乙個內部函式,它可以訪...