【发布时间】:2014-03-19 15:08:28
【问题描述】:
我知道这将是一个非常不可靠的 hack。但出于纯粹的兴趣:
如果已实例化对象的引用类定义发生更改并且您希望它“获悉更新”(无需重新实例化),您需要手动更改引用类对象的 .refClassDef 字段它)。
毕竟,如果引入 其他 方法,它似乎确实有效,但对于 现有 方法的修改则不起作用(参见下面的示例)。
这个问题与我在post 中的回答有关。
示例
原始类定义:
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 的变化,正如post 所示。
【问题讨论】:
标签: r reference-class