Lua 程式設計中的閉包是什麼?
在 Lua 中,任何函式都是一個閉包。從更狹義的角度來說,閉包是一個匿名函式,比如你示例中返回的函式。
閉包是一流的:它們可以被指定為變數、傳遞給函式或從函式中返回。它們既可以是 Lua 表中的鍵,也可以是值。
與 C++ 或 PHP 不同,Lua 中的閉包可以訪問本地作用域中的所有變數——稱為向上值,而無需顯式宣告向上值。當代碼執行離開設定這些向上值的程式碼塊時,這些向上值仍然存在。
既然我們知道了什麼是閉包以及它為什麼有用,我們舉一個例子,看看它如何工作。
示例
考慮以下示例 −
function simpleCounter() local i = 0 return function () -- anonymous function i = i + 1 return i end end c1 = simpleCounter() print(c1()) --> 1 print(c1()) --> 2 c2 = simpleCounter() print(c2()) --> 1 print(c1()) --> 3 print(c2()) --> 2
輸出
1 2 1 3 2
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP