これがひどく信頼性の低いハックであることは承知しています。しかし、純粋な興味から:
.refClassDef
既にインスタンス化されたオブジェクトの参照クラス定義が変更され、(再インスタンス化せずに)「更新について通知される」ようにしたい場合、参照クラス オブジェクトのフィールドで手動で何を変更する必要がありますか?
結局のところ、追加のメソッドが導入された場合は機能するように見えますが、既存のメソッドの変更では機能しません (以下の例を参照)。
この質問は、この投稿の私の回答に関連しています。
例
元のクラス定義:
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
ただし、たとえば、この投稿が示すように、変更について通知されない可能性があります。