閉包(closure)是一個函數和其相關的引用環境組合而成的對象。閉包可以捕獲其定義時所在的環境中的變量,使得這些變量在函數執行時仍然可用。
在R語言中,閉包可以用來封裝一些功能,并且可以在函數內部訪問外部的變量。例如,下面是一個簡單的閉包的例子:
make_adder <- function(x) {
function(y) {
x + y
}
}
add_5 <- make_adder(5)
add_5(3) # 輸出 8
在這個例子中,make_adder
函數返回一個內部函數,該函數可以訪問make_adder
函數的參數x
。當調用make_adder(5)
時,返回的函數會將傳入的參數與x
相加,實現一個加法器的功能。
閉包在R語言中有很多應用,比如可以用閉包來創建柯里化的函數,實現惰性求值,實現記憶化等。閉包可以讓我們更加靈活地組織代碼,使得代碼更加模塊化和可復用。