lua中的闭包

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/HQ354974212/article/details/89458548

闭包(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

运行效果:

猜你喜欢

转载自blog.csdn.net/HQ354974212/article/details/89458548