methods (version 3.5.2)

getClass: Get Class Definition

Description

Get the definition of a class.

Usage

getClass   (Class, .Force = FALSE, where)
getClassDef(Class, where, package, inherits = TRUE)

Arguments

Class

the character-string name of the class, often with a "package" attribute as noted below under package.

.Force

if TRUE, return NULL if the class is undefined; otherwise, an undefined class results in an error.

where

environment from which to begin the search for the definition; by default, start at the top-level (global) environment and proceed through the search list.

package

the name of the package asserted to hold the definition. If it is a non-empty string it is used instead of where, as the first place to look for the class. Note that the package must be loaded but need not be attached. By default, the package attribute of the Class argument is used, if any. There will usually be a package attribute if Class comes from class(x) for some object.

inherits

logical; should the class definition be retrieved from any enclosing environment and also from the cache? If FALSE only a definition in the environment where will be returned.

Value

The object defining the class. If the class definition is not found, getClassDef returns NULL, while getClass, which calls getClassDef, either generates an error or, if .Force is TRUE, returns a simple definition for the class. The latter case is used internally, but is not typically sensible in user code.

The non-null returned value is an object of class '>classRepresentation.

Use functions such as setClass and setClassUnion to create class definitions.

Details

Class definitions are stored in metadata objects in a package namespace or other environment where they are defined. When packages are loaded, the class definitions in the package are cached in an internal table. Therefore, most calls to getClassDef will find the class in the cache or fail to find it at all, unless inherits is FALSE, in which case only the environment(s) defined by package or where are searched.

The class cache allows for multiple definitions of the same class name in separate environments, with of course the limitation that the package attribute or package name must be provided in the call to

References

Chambers, John M. (2016) Extending R, Chapman & Hall. (Chapters 9 and 10.)

See Also

'>classRepresentation, setClass, isClass.

Examples

Run this code
# NOT RUN {
getClass("numeric") ## a built in class

cld <- getClass("thisIsAnUndefinedClass", .Force = TRUE)
cld ## a NULL prototype
## If you are really curious:
utils::str(cld)
## Whereas these generate errors:
try(getClass("thisIsAnUndefinedClass"))
try(getClassDef("thisIsAnUndefinedClass"))
# }

Run the code above in your browser using DataCamp Workspace