亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

關于lua閉包的一個小問題

關于lua閉包的一個小問題

qq_笑_17 2019-05-31 07:02:00
array = {"Lua", "Tutorial"}function elementIterator (collection)local index = 0local count = #collection-- 閉包函數return function ()index = index + 1if index <= countthen-- 返回迭代器的當前元素return collection[index]endendendfor element in elementIterator(array)doprint(element)end我比較不理解的就是:迭代函數elementIterator閉包返回了一個匿名函數,被賦到了element上,按理來說element應該是個函數,為什么這里直接輸出函數本身就執行了,不是應該加個括號才執行嗎?
查看完整描述

2 回答

?
智慧大石

TA貢獻1946條經驗 獲得超3個贊

應該是屬于符合手冊規定的迭代器寫法
這里elementIterator是迭代工廠,相當于一個提供狀態的對象
返回的function()閉包是才是迭代器,返回每個值
而for或while直接在使用迭代器返回每個值,所以element不會等同于迭代器函數而是各個值..

查看完整回答
反對 回復 2019-06-01
  • 2 回答
  • 0 關注
  • 626 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號