[Rd] Reference Classes/S4 Classes: can method dispatch check superclasses BEFORE resorting to method for "ANY"?
Martin Morgan
mtmorgan at fhcrc.org
Fri May 27 15:22:35 CEST 2011
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 at 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
More information about the R-devel
mailing list