validObject {methods} | R Documentation |
The validity of object
related to its class definition is
tested. If the object is valid, TRUE
is returned; otherwise,
either a vector of strings describing validity failures is returned,
or an error is generated (according to whether test
is
TRUE
).
The functions getValidity
and setValidity
get and set
the validity method of a class. This method is a function of one
object that returns TRUE
or a description of the non-validity.
validObject(object, test)
getValidity(ClassDef)
setValidity(ClassDef, method)
object |
Any object, but not much will happen unless the object's class has a formal definition. |
test |
If |
ClassDef |
The name of the class whose validity method is to be set. |
method |
A validity method; that is, either Note that validity methods do not have to check validity of any
slots or superclasses: the logic of |
Validity testing takes place “bottom up”: first the validity of the
object's slots, if any, is tested. Then for each of the classes that
this class extends (the “superclasses”), the explicit validity
method of that class is called, if one exists. Finally, the validity
method of object
's class is called, if there is one.
Testing generally stops at the first stage of finding an error, except that all the slots will be examined even if a slot has failed its validity test.
validObject
returns TRUE
if the object is valid.
Otherwise a vector of strings describing problems found, except that
if test
is FALSE
, validity failure generates an error,
with the corresponding strings in the error message.
John Chambers
The web page http://www.omegahat.org/RSMethods/index.html is the primary documentation.
The functions in this package emulate the facility for classes and methods described in Programming with Data (John M. Chambers, Springer, 1998). See this book for further details and examples.
setClass
.
setClass("track",
representation(x="numeric", y = "numeric"))
t1 <- new("track", x=1:10, y=sort(rnorm(10)))
## A valid "track" object has the same number of x, y values
validTrackObject <- function(x){
if(length(x@x) == length(x@y)) TRUE
else paste("Unequal x,y lengths: ", length(x@x), ", ", length(x@y),
sep="")
}
## assign the function as the validity method for the class
setValidity("track", validTrackObject)
## t1 should be a valid "track" object
validObject(t1)
## Now we do something bad
t1@x <- 1:20
## This should generate an error
try(validObject(t1))