您的位置:首页 > 编程语言 > Lua

【Lua】闭包

2015-09-22 18:18 423 查看
今天用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函数就不能访问了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: