On 05/27/2011 06:13 AM, Janko Thyson wrote:
Dear list,
is it possible that method dispatch checks for superclasses/virtual
classes before checking "ANY"?
I'd like to build a generic initialization method for all my Reference
Class (say "MyDataFrame") objects by having them inherit from class, say
"MyRefClassVirtual" (which would have to be a virtual S4 class; there
are no virtual Reference Classes, are there?)
Reference classes can be virtual; 'initialize' is a reference method,
not an S4 method.
.A <- setRefClass("A", contains="VIRTUAL",
methods=list(
initialize=function(..., msg="initialize,AA") {
callSuper(...)
message(msg)
.self
}))
.AA <- setRefClass("AA", contains="A")
> .A$new()
Error in methods::new(def, ...) :
trying to generate an object from a virtual class ("A")
> .AA$new()
initialize,AA
An object of class "AA"
<environment: 0x1b82f48>
Martin
The problem is that 'getRefClass("MyDataFrame")$new' calls (I think) the
method that was written for "ANY". Thus even though I write a explicit
initialize method for class "MyRefClassVirtual" which I should be called
for "MyDataFrame" as it inherits from this class, this method will never
be called because "ANY beats anything else".
So, I think I'd like to tell the method somehow to check for
superclass/virtual classes *before* resorting to "ANY".
Is that possible?
Regards,
Janko
______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel
--
Computational Biology
Fred Hutchinson Cancer Research Center
1100 Fairview Ave. N. PO Box 19024 Seattle, WA 98109
Location: M1-B861
Telephone: 206 667-2793
______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel