【Lua】闭包

今天用lua写回调的时候用到了闭包,定时器里面写了一个回调函数,用到了外面的局部变量

local tmpIdx = model.curStarIndex
self.waitSecondId[tmpIdx] = self:schedule(
function ()
waitSecond(self,tmpIdx)
end, 2.0)

感觉对闭包概念还是很模糊,就上网查了下相关内容,从下面这个例子,应该能看出一些东西,


function test()
     local iVal = 0         
     function func1()     
          print(iVal)          
     end

     function func2()    
          iVal = iVal + 10
     end

     return func1, func2
end

local a, b = test()
a()          
b()       
a()  

local c,d = test()
c()
d()
c()

b()       
a()

结果:


a,b   ;a2,b2都有属于自己的局部变量iVal,互不影响,这个很像c++里面的引用传递。而且这个属于他们自己的iVal的值又像static局部变量一样具有记忆功能。当然它不是全局变量,出了test函数就不能访问了。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值