首页 > 代码库 > lua的闭包
lua的闭包
什么是闭包呢?
其实我也不知道什么是闭包,更不知道为什么第一个给这种程序结构起了一个“闭包”的名字是基于什么。。。就像递归一样。。。感觉逼格好高(懵逼。。流鼻涕)
好了,不管这么多,只要知道下面这种程序结构就叫闭包
function foo()
local i = 0
function foo2()
i = i + 1
return i
end
return foo2
end
这个函数里面定义了一个局部变量,然后定义一个嵌套函数修改这个局部变量,返回这个变量,最后把嵌套函数返回出去
结果就是,只要有变量引用了返回出来的嵌套函数,那么里面定义的局部变量不会消失,挺神奇的
c = foo()
print(c())
print(c())
输出
1
2
还可以这么写
function foo()
local i = 0
return function() i = i + 1 return i end --匿名的
end
c = foo()
print(c())
print(c())
定义一个函数,一个嵌套函数,在嵌套函数里面更改父函数变量的值,返回变量。返回嵌套函数。
c = foo()那么,c就是那个返回的函数,再调用c(),返回运算后的变量
lua的闭包
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。