91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

广元市| 东乡县| 怀柔区| 缙云县| 富宁县| 文山县| 渝中区| 织金县| 沂南县| 怀安县| 和政县| 陆丰市| 泊头市| 英德市| 米脂县| 阿拉善盟| 丹棱县| 竹北市| 古田县| 富民县| 平遥县| 兰西县| 进贤县| 嘉鱼县| 陆良县| 贺州市| 错那县| 南江县| 淅川县| 丹棱县| 城口县| 竹溪县| 永吉县| 尉犁县| 万山特区| 四川省| 池州市| 通州区| 泾源县| 鹤峰县| 望都县|