在Lua中,閉包是指一個函數和其可以訪問的外部變量之間的組合。當一個函數在另一個函數內部定義,并且該內部函數引用了外部函數的局部變量時,就會形成閉包。
閉包可以訪問其所在函數的局部變量,即使外部函數已經執行完畢,這是因為閉包會將外部函數的局部變量保存在自己的環境中。這種特性使得閉包可以實現一些高級的功能,例如實現函數柯里化、保存狀態等。
在Lua中,可以通過定義一個函數內部的函數,并返回該內部函數來創建閉包,例如:
function outerFunction()
local x = 10
return function()
x = x + 1
print(x)
end
end
local innerFunction = outerFunction()
innerFunction() -- 輸出 11
innerFunction() -- 輸出 12