2
参照クラスを使用し、メソッドの継承に関する問題に取り組むように、パッケージを再組み立てしています。参照クラス継承メソッド
私には、というクラスがあり、それには(継承)A
が含まれています。しかし、私は継承されているクラス 'B'のインスタンスのメソッドを呼び出すことはできません。実際、それらはオブジェクトにも存在しません。
別のクラスのメソッドを継承する参照クラスを定義するにはどうすればよいですか?継承されたメソッドが一般的であることは重要ですか?
これは、問題を実証するための自己完結型の例である:
メソッド呼び出しA <- setRefClass("A", fields=c("f1", "f2"))
B <- setRefClass("B", fields=c("f3"), contains="A")
setGeneric("f", function(.self) standardGeneric("f"))
setMethod(f,
signature = c(.self="A"),
definition = function(.self) {
print("Hello from class A")
}
)
setMethod(f, signature = c(.self="B"),
definition = function(.self) {
print("Hello from class B")
}
)
A$methods(f=f)
a <- A$new()
b <- B$new()
:
> a$f()
[1] "Hello from class A"
> b$f()
Error in envRefInferField(x, what, getClass(class(x)), selfEnv) :
‘f’ is not a valid field or method name for reference class “B”
# Should print "Hello from class B"