Lua 学习_9 闭包

                                              Lua 学习  闭包


先看一个现象

function count()
    local i = 6        -- upvalue
    
    return function()
        i = i+1
        return i
    end
end

local  c1 = count()
print(c1())
print(c1())
print(c1())

local  c2 = count()
print("c2",c2())

这一点 类似于 JavaScript

  •   function count  返回一个函数; 在 这个函数  外面有一个变量 i  ; 是一个  upvalue,
  •   函数 c1 是在 count 函数外面执行的, 这时候 lua  会把这个 upvalue (上下文)缓存。就会产生 累加的效果
  •   函数 c2 函数 c1  是 count 函数 不同的作用域 ; 所以 upvlaue 的变量不会再  两个函数中 (c1,c2)中间传导
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章