1. 程式人生 > >泛型與閉包實現迭代器

泛型與閉包實現迭代器

泛型for----->第一遍
10
20
30
40
50
泛型for----->第二遍
[[email protected] for]# cat for1.lua 
function iter( t )
        local i = 0
        return function()
                i = i + 1
                return t[i]
        end
end

my_iter = iter{ 10, 20, 30, 40, 50 }

--[[
-- 第一種遍歷方式, 缺點,即每次迴圈時都需要建立一個新的closure變數,否則第一次迭代成功後,再將該closure用於新的for迴圈時將會直接退出。
while true do
        local element = my_iter()
        if element == nil then break end
        print( element )
end

print "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----->第一遍 10 20 30 40 50 泛型for----->第二遍 [[email protected] for]# cat for1.lua function iter( t ) local i = 0 r

實現

OS loop 直接退出。 func 保存 IT 實現 span end 泛型for----->第一遍 10 20 30 40 50 泛型for----->第二遍 [root@localhost for]# cat for1.lua fun

day011 函式名的運用,

主要內容: 1.函式名的使用以及第一類物件 2.閉包 3.迭代器一、函式名的運用 函式名就是變數名,命名規則與變數名一樣。 函式名儲存的是函式的記憶體地址。 1、檢視函式名的記憶體地址 """python def inf(): print("疏影"

python學習筆記:第11天

目錄 1. 函式名的使用 2. 閉包 3. 迭代器 1. 函式名的使用 其實函式名也是一個變數,但它是一個比較特殊的變數,與小括號配合可以執行函式的變數: 函式名其實和記憶體一樣,也可以使用print檢視它的記憶體地址: In[22]: def func1(): .

python-第一類物件,

# def fn(): # print("我叫fn") # fn() # print(fn) # <function fn at 0x0000000001D12E18> # fn() # gn = fn # 函式名可以進行賦值 # print(gn) # gn() # fn =

(十一)函式名的使用,

⼀. 函式名的運用.      函式名是⼀個變數, 但它是⼀個特殊的變數, 與括號配合可以執⾏函式的變數.     1.函式名的記憶體地址 def func(): print("呵呵") print(func) 結果: <funct

python學習筆記:第11天

目錄 1. 函式名的使用 其實函式名也是一個變數,但它是一個比較特殊的變數,與小括號配合可以執行函式的變數: 函式名其實和記憶體一樣,也可以使用print檢視它的記憶體地址: In[22]: def func1(): ...: pass ...: In[23]: print(fun

程式設計(容器、、介面卡)

面向物件程式設計關注的是程式設計的資料方面,而泛型程式設計關注的是演算法。 迭代器(iterator) 模板使得演算法獨立於儲存的資料型別,而迭代器使演算法獨立於使用的容器型別。(演算法引數變為迭代器型別,而不是各種類物件,函式物件,型別引數?) 迭代器不是某種型別,而是一系列

python

主要內容: 1. 函式名的使用以及第⼀類物件 2. 閉包 3. 迭代器 1. 函式名的使用以及第⼀類物件   函式名是一個變量, 但它是一個特殊的變量, 與括號配合可以執行函式的變量。 (1) 函式名的記憶體地址 def func(): print

day 10 函式名的運用,

函式名的本質 函式名本質上就是函式的記憶體地址 函式名的五種運用:  1、函式名是一個變數 def func(): print(666) print(func) # 函式的記憶體地址 <function func at 0x000002B6D2559AE8> 2、

day 11 第一類物件、

  課上總結 一.第一類物件 1.什麼是第一類物件? 在建立一個函式的時候,這個函式就是第一類物件,函式物件可以向變數一樣進行賦值操作,還可以作為列表的元素一樣使用. 第一類物件 -> 函式名 -> 變數名 比如:   def func(): print("我叫

Lua,JavaScript的筆記

在JS中一直不太理解閉包這個概念 ,有幸在學習lua程式設計中重新理解了下閉包和迭代器 這個是書上的原文: 迭代器是一種支援指標型別的結構,它可以遍歷集合的每一個元素。在 Lua 中我們 常常使用

@RequestBody 只能@RequestHeader同用 不能@RequestParam (實現函式部分方法只調用一次,之後傳遞下去)

@RequestBody  只能與@RequestHeader同用  不能與@RequestParam (實現迭代函式部分方法只調用一次,之後傳遞下去) 示例: 實現迭代函式部分方法只調用一次,之後傳遞下去,需要傳遞一些@controller前臺沒有的引數,又要保證前臺(jsp)能呼叫這個方法,用requi

python函數名的應用、和叠

index tun 容器類 c51 sub getattr 技術 del getitem 一、函數名的應用(第一類對象)   函數名是一個變量,但它是一個特殊的變量,與括號配合可以執行函數變量。   1.函數名的內存地址 def func(): print("哈哈

python之路——函數名的應用,,叠

glob 協議 字符串 () closure nco 異常處理 類類型 單向 # ##函數名的應用# def func():# print(666)# func()## 1.函數名就是函數的內存地址# print(func) #結果<functio

、叠

進行 list -s 內置 while 如何判斷 sin 分享圖片 重復 1.函數名 函數名就是變量名(可以進行賦值),函數名存儲的是函數的地址 需要括號才可以執行 2.閉包:內層函數對外層函數(非全局)變量的引用 作用:1.保護一個變量,讓他不受改變 2.讓一個變量

python利用定義類實現協議

1.具有__ next__和__ iter__方法的物件即被視為迭代器,其中next方法每執行一次返回迭代的下一項,而iter方法可以把物件變成迭代器. 執行for迴圈的本質即是先對物件使用iter方法, 然後不斷使用next方法,直到報出StopIteration. 故可直接在類中定義這兩

少說話多寫程式碼之Python學習051——類的成員(實現

在Python類中,實現迭代器,要定義這個方法,__iter__。這個方法返回一個迭代器,其實質是帶有一個next方法的物件。為形象起見,我們定義一個斐波那契數列類。如下, class MyFibs:     def __init__(self):   &nb

第一類對象 和叠

代碼 特殊 list pro .cn except turn eba 容器類 本節主要內容:  1. 函數名的使?以及第?類對象  2. 閉包  3. 叠代器 一、函數名的運用   函數名是一個變量,但是它是一個特殊的變量,與括號配合可以執行函數的變量。   1、函數名的內

函數名的運用、以及叠

readlines 行操作 找到 關閉 什麽是 sprint state error 證明 函數名的運用 函數名是一種特殊的變量,函數名加上括號後表示函數執行,除此之外,函數名還可以進行如下幾條操作: 1. 作為變量賦值 1 def func(): 2 print