5.函数及函数闭包
5.1函数
--多返回值的函数
function foo(a,b,c)
local sum=a+b;
return sum,c
end
--平行赋值
r1,r2=foo(1,"123","helloworld!")
print(r1,r2)
运行结果:
5.2函数闭包
Upvalue:一个函数所使用的定义在它的函数体之外的局部变量
函数闭包:一个函数和它所有使用的upvalue构成函数的闭包
function countdowntimer(second)
local ms=second*1000
--ms对于函数countDown()是一个upvalue,对于函数countdowntimer()只是一个局部变量
local function countDown()
ms=ms-1
return ms
end
--返回的是一个函数
return countDown
end
--time1为函数
time1=countdowntimer(1)
for i=1,3 do
print(time1())
end
print("#########")
time2=countdowntimer(1)
for i=1,3 do
print(time2())
end
运行结果: