Lua 迭代器

迭代器for循環(huán) 一般通過一個(gè)叫作迭代器(iterators)的函數(shù)工作砸狞。 每次迭代,迭代器函數(shù)都會(huì)被調(diào)用以產(chǎn)生一個(gè)新的值镀梭, 當(dāng)這個(gè)值為 nil 時(shí)刀森,循環(huán)停止。
內(nèi)容摘要: 迭代器 迭代器函數(shù) paris iparis

--標(biāo)準(zhǔn)實(shí)現(xiàn)
for (var[,···]) in [iterfun, state,convar] do
    body
end

-- iterfun ::= function(state,convar) return step,var
-- step 會(huì)成為下一次迭代的convar的值

-- state  狀態(tài)值
-- convar控制值 除第一個(gè)迭代使用初始报账,往后的迭代都是上一個(gè)迭代返回的 step 的值

如下是迭代器for循環(huán)的默認(rèn)執(zhí)行過程:

  • 初始化撒强,計(jì)算 迭代函數(shù)、狀態(tài)值笙什、控制值 的值;如果不賦值默認(rèn)為nil胚想。
  • 將狀態(tài)值和控制值作為參數(shù)調(diào)用迭代函數(shù)
  • 將迭代函數(shù)返回的值賦給變量列表琐凭。
  • 如果返回的第一個(gè)值為nil循環(huán)結(jié)束
  • 如果返回的第一個(gè)值不為nil,把他賦值給inits 控制值
  • 回到第二步再次調(diào)用迭代函數(shù)
--迭代器測試
function add(state,convar)
    if (convar<state) then
            print("state",state,"convar",convar)
        return convar+1,convar*2
    end
end

for i,n in add,4,0
do
   print("k : " , i , "val : " ,n)
end

運(yùn)行結(jié)果:
state   4   convar  0
k :     1   val :   0
state   4   convar  1
k :     2   val :   2
state   4   convar  2
k :     3   val :   4
state   4   convar  3
k :     4   val :   6
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末浊服,一起剝皮案震驚了整個(gè)濱河市统屈,隨后出現(xiàn)的幾起案子胚吁,更是在濱河造成了極大的恐慌,老刑警劉巖愁憔,帶你破解...
    沈念sama閱讀 212,542評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件腕扶,死亡現(xiàn)場離奇詭異,居然都是意外死亡吨掌,警方通過查閱死者的電腦和手機(jī)半抱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,596評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來膜宋,“玉大人窿侈,你說我怎么就攤上這事∏锩#” “怎么了史简?”我有些...
    開封第一講書人閱讀 158,021評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長肛著。 經(jīng)常有香客問我圆兵,道長,這世上最難降的妖魔是什么枢贿? 我笑而不...
    開封第一講書人閱讀 56,682評(píng)論 1 284
  • 正文 為了忘掉前任殉农,我火速辦了婚禮,結(jié)果婚禮上萨咕,老公的妹妹穿的比我還像新娘统抬。我一直安慰自己,他們只是感情好危队,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,792評(píng)論 6 386
  • 文/花漫 我一把揭開白布聪建。 她就那樣靜靜地躺著,像睡著了一般茫陆。 火紅的嫁衣襯著肌膚如雪金麸。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,985評(píng)論 1 291
  • 那天簿盅,我揣著相機(jī)與錄音挥下,去河邊找鬼。 笑死桨醋,一個(gè)胖子當(dāng)著我的面吹牛棚瘟,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播喜最,決...
    沈念sama閱讀 39,107評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼偎蘸,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起迷雪,我...
    開封第一講書人閱讀 37,845評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤限书,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后章咧,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體倦西,經(jīng)...
    沈念sama閱讀 44,299評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,612評(píng)論 2 327
  • 正文 我和宋清朗相戀三年赁严,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了扰柠。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,747評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡误澳,死狀恐怖耻矮,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情忆谓,我是刑警寧澤裆装,帶...
    沈念sama閱讀 34,441評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站倡缠,受9級(jí)特大地震影響哨免,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜昙沦,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,072評(píng)論 3 317
  • 文/蒙蒙 一琢唾、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧盾饮,春花似錦采桃、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,828評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至徘钥,卻和暖如春衔蹲,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背呈础。 一陣腳步聲響...
    開封第一講書人閱讀 32,069評(píng)論 1 267
  • 我被黑心中介騙來泰國打工舆驶, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人而钞。 一個(gè)月前我還...
    沈念sama閱讀 46,545評(píng)論 2 362
  • 正文 我出身青樓沙廉,卻偏偏與公主長得像,于是被迫代替她去往敵國和親臼节。 傳聞我的和親對(duì)象是個(gè)殘疾皇子撬陵,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,658評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容

  • 迭代器(iterator)是一種對(duì)象俱病,它能夠用來遍歷標(biāo)準(zhǔn)模板庫容器中的部分或全部元素,每個(gè)迭代器對(duì)象代表容器中的確...
    誰說我是小小云閱讀 388評(píng)論 0 0
  • Lua 迭代器 作者:楊夢鴿 校對(duì):翟舒青 迭代器(iterator)是一種對(duì)象袱结,它能夠用來遍歷標(biāo)準(zhǔn)模板庫容器中的...
    木易林1閱讀 200評(píng)論 0 0
  • 預(yù)備知識(shí):lua函數(shù)是一種First-Class Value,即它與傳統(tǒng)的變量并沒有什么區(qū)別途凫。它可以存儲(chǔ)到變量中垢夹、...
    涼拌姨媽好吃閱讀 448評(píng)論 0 1
  • 在c#中定義的集合是沒法在lua中用for ..in ipairs()這種方法來遍歷的,下面介紹一個(gè)自定義的實(shí)現(xiàn)來...
    NeoSam閱讀 848評(píng)論 0 1
  • 迭代器:pairs :迭代 table维费,遍歷表中所有的 key 和 valueipairs :按照索引從1開始果元,...
    Mad_Elliot閱讀 291評(píng)論 0 0