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
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP