| % File src/library/methods/man/getClass.Rd |
| % Part of the R package, https://www.R-project.org |
| % Copyright 1995-2015 R Core Team |
| % Distributed under GPL 2 or later |
| |
| \name{getClass} |
| \alias{getClass} |
| \alias{getClassDef} |
| \title{Get Class Definition } |
| \description{ |
| Get the definition of a class. |
| } |
| \usage{ |
| getClass (Class, .Force = FALSE, where) |
| getClassDef(Class, where, package, inherits = TRUE) |
| } |
| \arguments{ |
| \item{Class}{ the character-string name of the class, often with a |
| \code{"package"} attribute as noted below under \code{package}.} |
| \item{.Force}{ if \code{TRUE}, return \code{NULL} if the class is |
| undefined; otherwise, an undefined class results in an error.} |
| \item{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.} |
| \item{package}{ the name or environment of the package asserted to hold the |
| definition. If it is a non-empty string it is used instead of |
| \code{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 \code{Class} argument is |
| used, if any. There will usually be a package attribute if |
| \code{Class} comes from \code{class(x)} for some object. |
| } |
| \item{inherits}{logical; should the class definition be retrieved from |
| any enclosing environment and also from the cache? If \code{FALSE} |
| only a definition in the environment \code{where} will be returned.} |
| } |
| \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 \code{getClassDef} will find the |
| class in the cache or fail to find it at all, unless \code{inherits} |
| is \code{FALSE}, in which case only the environment(s) defined by |
| \code{package} or \code{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 |
| |
| } |
| \value{ |
| The object defining the class. If the class definition is not found, |
| \code{getClassDef} returns \code{NULL}, while \code{getClass}, which |
| calls \code{getClassDef}, either generates an error or, if |
| \code{.Force} is \code{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 |
| \code{\linkS4class{classRepresentation}}. |
| |
| Use functions such as \code{\link{setClass}} and |
| \code{\link{setClassUnion}} to create class definitions. |
| } |
| \references{ |
| Chambers, John M. (2016) |
| \emph{Extending R}, |
| Chapman & Hall. |
| (Chapters 9 and 10.) |
| } |
| |
| \seealso{ |
| \linkS4class{classRepresentation}, |
| \code{\link{setClass}}, |
| \code{\link{isClass}}. |
| } |
| \examples{ |
| 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")) |
| } |
| \keyword{programming} |
| \keyword{classes} |