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

Reply via email to