闭包(closure):外部函数 + 非局部变量(upvalue) + 内部函数(闭包函数)
function fun( n ) --外部函数
-- n是lua中的upvalue
return function() --内部函数
n=n+1
return n
end
, function() --内部函数
n=n+2
return n
end
end
f1, f2 = fun(10)
print(f1,f2)
print(f1()) -- n变成10+1 =11
print(f1()) -- n变成11+1 =12
print(f2()) -- n变成12+2 =14
print("---------再次创建新的闭包--------")
f3, f4 = fun(10)
print(f3,f4)
print(f3()) -- n变成10+1 =11
print(f3()) -- n变成11+1 =12
print(f4()) -- n变成12+2 =14
运行效果: