在面向对象的 R 编程(尤其是 Winston Chang 的 R6 包)中,什么是 active binding ?
最佳答案
首先,最好了解什么是“绑定(bind)”。如果我们运行如下代码:
x <- 5
那么在计算机内部发生的事情是我们将值 5 放入内存槽中,并且我们还将名称“x”“绑定(bind)”到该位置和值,以便稍后我们可以使用
x
它会去那个内存位置并查找值(在我们将其更改为其他值之前,它是 5)。这称为静态绑定(bind),因为除非程序专门进行更改,否则值不会更改。主动绑定(bind)的相似之处在于我们将一个变量名(如“x”)绑定(bind)到某物,但某物不仅仅是一个常量值,而是一个每次尝试访问
x
时都会运行的函数。 .因此,您可以将名称“x”绑定(bind)到调用 rnorm
的函数。然后每次访问 x
你会看到一个不同的随机正常值。另一个例子,考虑我们是否对静态绑定(bind)做一些事情,比如:
mydf <- data.frame( x=1:10, y=10:1 )
df.size <- nrow(mydf)
mydf <- data.frame(z=1:100)
现在变量
df.size
行数为 mydf
当它被创建时,而不是它现在有多少行(因为 nrow
运行一次,然后结果作为静态绑定(bind)放入 df.size
变量中,它不会随着数据框的更改而更新)。另一方面,如果我们在 df.size
之间创建了一个事件绑定(bind)。和一个运行 nrow(mydf)
的函数那么任何时候我们查看 df.size
的“值”那么它会在 mydf
中显示当前的行数无论我们改变多少次。
关于r - 在面向对象的 R 编程中,什么是 "active binding"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33832488/