关于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应该是个函数,为什么这里直接输出函数本身就执行了,不是应该加个括号才执行吗? 展开
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应该是个函数,为什么这里直接输出函数本身就执行了,不是应该加个括号才执行吗? 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询