1、闭包:在lua中调用一个函数,调用完以后,这个函数会在函数中保留些数据,当下一次调用这个函数时可以,可以根据保留数据,进行第二次调用,
下面用闭包写的一个计数器每次调用返回的结果加一。
定义个函数fun(),在fun()里定义个局部变量i,然后在return返回中写一个函数,操作变量i加1,并返回。 在使用这个闭包的时候,用test1=fun()相当于将fun()函数中return返回的函数赋给test1,这样需要计数的时候就调用一次test1()函数,次数便会累积往上加。如果需要一个新的计数器就将test2=fun()这样就可以有一个新的计数器从新开始计数。两个计数器的次数互不影响。
function fun()
local i=0
return function ()
i=i+1
return i
end
end
test1=fun()
test2=fun()
print(test1())
print(test1())
print(test1())
print(test1())
print(test1().."\n")
print(test2())
print(test2())
运行结果,调用五次test1,和两次test2