對lua迭帶器的理解

2021-09-01 02:17:14 字數 630 閱讀 2809

一般用 「for 變數列表 in 迭帶器" 句型遍歷,即在in後面是迭帶器表示式,包含3個物件:迭帶函式、狀態常量、控制變數,當然狀態常量和控制變數可以不要。

迭帶過程:

1. 將狀態常量、控制變數傳給迭帶函式進行函式呼叫,將迭帶函式返回值賦給for變數列表,同時將返回的第乙個值賦給控制變數。

2. 如果函式返回的第乙個值為nil則迴圈結束,否則執行迴圈體。

3. 迴圈體執行完後重複步驟1.

再看陣列迭帶器ipairs:

ipairs (t)

returns three values: an iterator function, the table t, and 0, so that the construction

for i,v in ipairs(t) do body end

will iterate over the pairs (1,t[1]), (2,t[2]), ···, up to the first integer key absent from the table.

返回了三個東西:迭帶函式、陣列本身、控制變數下標,顯然要求迭帶函式每次呼叫後能返回+1後的下標才能正常遍歷陣列。

當然另乙個迭帶器pairs函式返回的是next迭帶函式,靠next函式去遍歷。

迭帶器與泛型

看下面的例子的時候請使用f11鍵單步執行,檢視執行過程 using system using system.collections using system.collections.generic public class persons ienumerable region ienumerable...

對Python中帶引數裝飾器的理解

學習python的裝飾器時,在裝飾器的引數這裡卡住了,後來總算是搞清楚了怎麼回事。為了方便起見,這裡只討論由函式定義的函式裝飾器。普通的無引數裝飾器很好理解 def dec1 f f args dec1 def spam a,b,c print a b c 實際的效果是 spam dec1 spam...

對lua協程的一點理解

讀 programming in lua 協程那一章,比較困惑的還是procuer consumer那個例子 function consumer prod while true dolocal x receive prod print x endend function receive prod l...