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(),返回运算后的变量

转载于:https://www.cnblogs.com/xzxdm/p/6980358.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值