閉包的兩大基礎

閉包是一個函數加上它可以正確訪問的 upvalues。

閉包的基礎是詞法定界。

函數內部嵌套另一函數時,內部函數體可以訪問外部函數的局部變量,這種特徵我們稱作詞法定界。

function newcount()

local a;

c = function()

a=a+1; //內部函數可以訪問外部的a.

end

c();//執行內部函數。

return a;

end


 

閉包的另一基礎是:函數可以作爲返回值。

function newcount2()

local a=1;

return function() --外部函數返回一個函數。

     a=a+1;

     return a;

end

end

閉包就是被返回函數+此函數被修改的本地變量。

閉包不是一個函數,也不是一個變量。是兩者的組合體。

xx=newcount2()
這裏的xx就是一個閉包。
print(xx())
print(xx())
-------------------打印的結果就是
2
3
感覺與C++的類與對象,對象的方法的概念類似。

--------------------------------------------

2017-10-23

閉包的三個要素。

1,閉包函數;2 工廠(創建並返回閉包函數的函數)3,upvalue(閉包函數可以訪問到的外部變量)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章