是否有可能获得主动绑定背后的功能?

Kun*_*Ren 7 r

在R中,我们可以makeActiveBinding通过提供一个函数来创建一个活动绑定:

e <- new.env()
makeActiveBinding("var", 
  function(x) if (missing(x)) cat("get\n") else cat("set\n"), e)
Run Code Online (Sandbox Code Playgroud)

一旦创建了活动绑定,似乎无法获得它背后的功能.

我想知道是否有可能获得活动绑定背后的功能,如下所示?

> getActiveBindingFunction("var", e)
function(x) if (missing(x)) cat("get\n") else cat("set\n"), e)
Run Code Online (Sandbox Code Playgroud)

Moo*_*per 5

R 4.0.0开始,您可以直接使用activeBindingFunction(). 它没有真正记录下来,但足够简单!

e <- new.env()
makeActiveBinding("var", 
                  function(x) if (missing(x)) cat("get\n") else cat("set\n"), e)
activeBindingFunction("var", e)
#> function(x) if (missing(x)) cat("get\n") else cat("set\n")
Run Code Online (Sandbox Code Playgroud)