Lua 编程中的闭包是什么?
在Lua中,任何函数都是一个闭包。从狭义上讲,闭包是一个匿名函数,就像您示例中的返回函数一样。
闭包是一流的:它们可以分配给变量,传递给函数并从它们返回。它们可以是Lua表中的键和值。
与C++或PHP不同,Lua中的闭包可以访问局部范围内的所有变量——上值,无需显式声明上值。当代码执行离开设置它们的块时,上值仍然存在。
现在我们知道闭包是什么以及它为什么有用,让我们举个例子看看它是如何工作的。
示例
考虑下面显示的例子-
function simpleCounter()
local i = 0
return function () -- anonymous function
i = i + 1
return i
end
end
c1 = simpleCounter()
print(c1()) --> 1
print(c1()) --> 2
c2 = simpleCounter()
print(c2()) --> 1
print(c1()) --> 3
print(c2()) --> 2输出结果1 2 1 3 2