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