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

更新日期: 2021 年 7 月 19 日

976 次瀏覽

開啟你的 事業

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.