我正在尝试覆盖引用类方法。因为引用类方法绑定到类而不是对象,我相信为了做到这一点,我需要定义一个继承自旧引用类的新引用类。然而,我试图继承的类是在我的外部包(dplyr)中定义的。我无法弄清楚执行此操作的正确语法,包含似乎只需要一个文本名称,并且不搜索外部包中的类定义。
特别是我试图从 dplyr 继承 DbDisconnector 引用类并覆盖 finalize 方法。
这正确地找到了父类,但随后无法分配给它,因为它来自不同的包。
NewDbDisconnector <- setRefClass("NewDbDisconnector",
contains = 'DbDisconnector',
methods = list(
finalize = function() {
message("test")
}
),
where=getNamespace('dplyr')
)
# Error in assign(mname, def, where) (from file.r#75) :
# cannot add bindings to a locked environment
包含方法只接受字符串,不能只从 getRefClass 给它们一个 refClass 定义。
NewDbDisconnector <- setRefClass("NewDbDisconnector",
contains = getRefClass("DbDisconnector", getNamespace("dplyr")),
methods = list(
finalize = function() {
message("test")
}
)
)
# Error in FUN(X[[1L]], ...) :
# the 'contains' argument should be the names of superclasses: got an element of class “name”
我认为这应该是可能的,我只是想不出正确的方法。