【Lua】闭包

来源:互联网 发布:linux shell range 编辑:程序博客网 时间:2024/05/17 08:56

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

local tmpIdx = model.curStarIndexself.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, func2endlocal a, b = test()a()          b()       a()  local c,d = test()c()d()c()b()       a()

结果:


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



0 0