泛型與閉包實現迭代器

2021-09-07 18:56:21 字數 1010 閱讀 4221

泛型for--

--->第一遍

1020

3040

50泛型for

----->第二遍

[root@localhost for]#cat for1.lua

function

iter( t )

local i = 0

return

function

() i = i + 1

return

t[i]

endend

my_iter = iter

--[[

-- 第一種遍歷方式, 缺點,即每次迴圈時都需要建立乙個新的closure變數,否則第一次迭代成功後,再將該closure用於新的for迴圈時將會直接退出。

while true do

local element = my_iter()

if element == nil then break end

print( element )

endprint "loop again"

-- 第一遍 遍歷之後, 下面的不會執行,因為狀態沒有重置

while true do

local element = my_iter()

if element == nil then break end

print( element )

end]]--

--第二種遍歷方式: 泛型for遍歷, lua在其內部替我們儲存了迭代函式

print

"泛型for----->第一遍

"for v in my_iter do

print

( v )

end--

跟while迴圈一樣,存在上述所說的缺點

print

"泛型for----->第二遍

"for v in my_iter do

print

( v )

end

泛型與閉包實現迭代器

泛型for 第一遍 1020 3040 50泛型for 第二遍 root localhost for cat for1.lua function iter t local i 0 return function i i 1 return t i endend my iter iter 第一種遍歷方式...

閉包與迭代器

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.若定義的函式引數為可變型別的變數,若果呼叫改變了此變數,其他可以看到此位置的變數也跟隨改...

python基於閉包的實現延遲求值與泛型函式

本博文源於python基礎,主要實現閉包的應用,包含 延遲求值與泛型函式實現。這些都是應用巢狀函式持有定義環境變數來實現 閉包是指 python語言中將組成函式的語句和這些語句的執行環境一起打包到一起所得到的物件。當使用巢狀函式時,閉包將捕獲內部函式執行所需的整個環境。巢狀函式可以使用被巢狀函式中的...