抱歉,这有点复杂。
我想捕获一个参数表达式,但也知道应该在哪个环境中对其进行评估。像这样:
make.promise = function(x = print(b), b = 7) {
expr = substitute(x)
env = parent.frame()
function() {
eval(expr, env)
}
}
p1 = (
function() {
a = 2
make.promise(print(a))
}
)()
p2 = make.promise()
问题是,如果没有为 提供参数x
,它的环境将成为 的本地环境make.promise()
,我不知道如何检测到。substitute
除了我可以使用的功能之外,是否还有其他功能也可以捕获环境?