我知道这将是一个非常不可靠的黑客攻击。但出于纯粹的兴趣:
.refClassDef
如果已实例化对象的引用类定义发生更改并且您希望它“被告知更新”(无需重新实例化它),您需要在 ref 类对象的字段中手动更改什么。
毕竟,如果引入其他方法,它似乎确实有效,但不适用于修改现有方法(参见下面的示例)。
这个问题与我在这篇文章中的回答有关。
例子
原始类定义:
MyReferenceClass <- setRefClass("MyReferenceClass",
methods = list(
print_hello = function(){
print("hello")
}
)
)
实例化:
my_object <- MyReferenceClass$new()
my_object$print_hello()
[1] "hello"
更新类定义:
MyReferenceClass <- setRefClass("MyReferenceClass",
methods = list(
print_hello = function(){
print("hello_again")
},
print_goodbye = function(){
print("goodbye")
}
)
)
实例可以使用新方法:
my_object$print_goodbye()
[1] "goodbye"
但是,例如,它将无法被告知print_hello
如这篇文章所示的变化。