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)中間傳導
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章