【发布时间】:2022-01-25 06:32:19
【问题描述】:
假设我有一个闭包add_y(y),它返回一个将y 添加到其输入的函数。
add_y <- function(y) {
function(x) {
x + y
}
}
add_4 <- add_y(4)
所以add_4 的值是一个将 4 添加到其输入的函数。这行得通。我想使用dput 来显示add_4 的定义为
function(x) {
x + 4
}
但这不是 dput 返回的内容。
add_y <- function(y) {
function(x) {
x + y
}
}
add_4 <- add_y(4)
dput(add_4)
#> function (x)
#> {
#> x + y
#> }
有没有办法获得可以在封闭环境之外运行的源代码?
【问题讨论】:
-
为什么不在
local环境中捕获formals和args? -
闭包总是包含一个环境。
dput为您提供功能而不是环境。y存储在环境中。如果你想要好的建议,你应该解释你为什么需要这个。为什么dput而不是序列化闭包?
标签: r closures r-environment