关于lua闭包的一个小问题

array={"Lua","Tutorial"}functionelementIterator(collection)localindex=0localcount=#co... array = {"Lua", "Tutorial"}

function elementIterator (collection)
local index = 0
local count = #collection
-- 闭包函数
return function ()
index = index + 1
if index <= count
then
-- 返回迭代器的当前元素
return collection[index]
end
end
end

for element in elementIterator(array)
do
print(element)
end

我比较不理解的就是:迭代函数elementIterator闭包返回了一个匿名函数,被赋到了element上,按理来说element应该是个函数,为什么这里直接输出函数本身就执行了,不是应该加个括号才执行吗?
展开
 我来答
百度网友9308069
2018-04-03 · TA获得超过1万个赞
知道大有可为答主
回答量:3947
采纳率:89%
帮助的人:1915万
展开全部
应该是属于符合手册规定的迭代器写法
这里elementIterator是迭代工厂,相当于一个提供状态的对象
返回的function()闭包是才是迭代器,返回每个值
而for或while直接在使用迭代器返回每个值,所以element不会等同于迭代器函数而是各个值..
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式