2
我正在重新包裝一個包以使用引用類並遇到方法繼承的問題。引用類繼承方法
我有一個類,B
,它包含(繼承)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"