r - 在面向对象的 R 编程中,什么是 "active binding"?

标签 r oop r6

在面向对象的 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/

相关文章:

javascript - JavaScript 中原始数据类型和非原始数据类型的区别

java - 为什么可以在 PHP 中覆盖实例变量而在 Java 中不能?

r - R6 类中的静态方法

r - 使用 reshape2 和数据空气质量转置数据

r - 1个主面板和2个侧面板

c++ - 如果匹配特定类,则从基类对象的 vector 中删除对象

python - 在 R6 的初始化中调用 R6 类的函数

r - R6 类变量

r - 如何显示Shiny本地存储的多张图片(png)

r - 在R中编写tryCatch的简单版本