如何解决关闭功能对Lua意味着什么?
按照指南(https://www.tutorialspoint.com/lua/lua_quick_guide.htm), 上面写着:
array = {"Lua","Tutorial"}
function elementIterator (collection)
local index = 0
local count = #collection
-- The closure function is returned
return function ()
index = index + 1
if index <= count
then
-- return the current element of the iterator
return collection[index]
end
end
end
for element in elementIterator(array)
do
print(element)
end
闭包功能对Lua意味着什么?
解决方法
在Lua中,任何函数都是闭包。从狭义上讲,闭包是一个匿名函数,就像您的示例中返回的函数一样。
闭包是一流的:它们可以分配给变量,传递给函数并从它们返回。在Lua 表中,它们既可以是键,也可以是值。
与PHP或C ++不同,闭包可以访问局部范围内的所有变量- upvalues (在您的示例中为index
和count
,它们保持迭代器状态,并且也collection
),而无需显式声明升值。当代码执行离开设置它们的块时,升值仍然存在。
没有闭包(或子例程),就无法编写迭代器。在您的示例(一个简单的迭代器)中,elementIterator
是一个接收表并返回另一个函数(闭包)的函数。此返回的闭包由泛型for 指令反复调用,直到返回nil
。
您可能会发现本文有趣:https://www.lua.org/doc/jucs17.pdf。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。