Hi all, I've constructed the following function to test whether or not an object was created from a reference class: isRefClassObject <- function(x) isS4(x) && is.environment(attr(x,'.xData')) && exists('.refClassDef',attr(x,'.xData')) but I'm unsure if it's a complete test or if there's a better way to test. Regardless, It would be nice to have such a function in the methods package. I have a case where I'd like to ensure that an object is constructed from a reference class AND that it implements a certain method: if (isRefClassObject(x) && 'run' %in% getRefClass(x)$methods()) x$run() Thanks, Jeff -- http://biostat.mc.vanderbilt.edu/JeffreyHorner
There is a virtual class "refClass" that all reference classes subclass, so is(x, "refClass") is the natural test, as in: > foo <- setRefClass("foo", fields = "bar") > x <- foo$new() > is(x, "refClass") [1] TRUE On 3/10/11 7:40 AM, Jeffrey Horner wrote:> Hi all, > > I've constructed the following function to test whether or not an > object was created from a reference class: > > isRefClassObject<- function(x) isS4(x)&& > is.environment(attr(x,'.xData'))&& > exists('.refClassDef',attr(x,'.xData')) > > but I'm unsure if it's a complete test or if there's a better way to > test. Regardless, It would be nice to have such a function in the > methods package. > > I have a case where I'd like to ensure that an object is constructed > from a reference class AND that it implements a certain method: > > if (isRefClassObject(x)&& 'run' %in% getRefClass(x)$methods()) > x$run() > > Thanks, > > Jeff
Maybe Matching Threads
- Reference Classes: shortcut like 'isS4' for Ref Classes?
- Reference classes and memory consumption
- Reference Classes: removing methods -> implications for objects/instances of that class
- Reference classes: accessor functions via 'getRefClass(...)$accessors(...)'
- r: functions