闭包(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语言中有很多应用,比如可以用闭包来创建柯里化的函数,实现惰性求值,实现记忆化等。闭包可以让我们更加灵活地组织代码,使得代码更加模块化和可复用。