中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

lua中的closure(閉合函數)

發布時間:2020-06-29 01:33:22 來源:網絡 閱讀:540 作者:螞蟻雄心 欄目:開發技術

若將一個函數寫在另一個函數之內,那么這個位于內部的函數便可以訪問外部函數的局部變量。

function newCounter()

local i = 0

return function()----匿名函數

         i = i + 1

         return i

       end

end


c1 = newCounter()

c2 = nweCounter()

print(c1())---->1

print(c1())---->2

print(c2())---->1

print(c1())---->3

print(c2())---->2

在匿名函數內部,i既不是全局變量也不是局部變量,將其稱為“非局部的變量”。

初看上去,由于創建變量i的newCounter函數已經返回,所以之后每次調用匿名函數時,i都應該超出了作用域。但是其實lua會以closure機制來處理這種情況。closure就是一個函數加上該函數所訪問的所有“非局部的變量”。如果再次調用newCounter時,那么會新創建一個新的局部變量i,從而產生一個新的closure,上面c1和c2是同一個函數創建的兩個不同的closure,它們各自擁有局部變量i的實例,它們各自獨立,導致打印結果沒有關聯。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

军事| 武夷山市| 行唐县| 洛阳市| 内乡县| 博罗县| 金门县| 吐鲁番市| 乐昌市| 收藏| 江津市| 林州市| 军事| 杭州市| 衡阳县| 辽源市| 富民县| 保山市| 抚松县| 巩义市| 张家港市| 河源市| 沈丘县| 胶南市| 尚志市| 阜平县| 庆阳市| 大关县| 延寿县| 晋宁县| 西乌珠穆沁旗| 开封市| 荥经县| 漳平市| 吉木乃县| 福海县| 依兰县| 施甸县| 晋州市| 济源市| 康定县|