1

抱歉,这有点复杂。

我想捕获一个参数表达式,但也知道应该在哪个环境中对其进行评估。像这样:

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除了我可以使用的功能之外,是否还有其他功能也可以捕获环境?

4

1 回答 1

0

最简单的实现make.promise是:

make.promise <- function(x) {
    function() x
}

但我认为这不是你要找的。我不知道有什么方法可以找到相关的环境 - 您可以尝试通过电子邮件发送 r-devel 邮件列表。

于 2011-06-27T12:56:58.760 回答