From gregor.gorjanc at bfro.uni-lj.si  Thu Mar  1 11:47:42 2007
From: gregor.gorjanc at bfro.uni-lj.si (Gregor Gorjanc)
Date: Thu, 01 Mar 2007 11:47:42 +0100
Subject: [Rd] Same method for more than one class
Message-ID: <45E6AF4E.9050107@bfro.uni-lj.si>

Hi,

when defining method (I used length bellow just for the simplicity) for
myClass (S4 class) I use

setMethod(f="length", signature(x="myClass"),
          def=function(x) {
            cat("works")
          })

If I have myClass1 and myClass2 and mentioned method, which is not the
default one, applies to both classes I have to write two setMethod()
statements. Would it be possible to use

signature(x=c("myClass1", "myClass2"))

Currently it issues an error

setClass(Class="myClass1", representation=representation(x="integer"))
setClass(Class="myClass2", representation=representation(x="integer"))
setMethod(f="length", signature(x="myClass1"),
          def=function(x) {
            cat("works")
          })
## OK.

setMethod(f="length", signature(x=c("myClass1", "myClass1")),
          def=function(x) {
            cat("works")
          })
Error in signature(x = c("myClass1", "myClass1")) :
	bad class specified for element 1 (should be a single character string)

Regards, Gregor



[Rd] Same method for more than one class
Gregor Gorjanc