当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R getClass 获取类定义


R语言 getClass 位于 methods 包(package)。

说明

获取类的定义。

用法

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

参数

Class

类的字符串名称,通常带有 "package" 属性,如下所述 package

.Force

if TRUE ,如果类未定义,则返回 NULL ;否则,未定义的类会导致错误。

where

开始搜索定义的环境;默认情况下,从顶级(全局)环境开始并继续搜索列表。

package

断言保存定义的包的名称或环境。如果它是非空字符串,则使用它代替 where 作为查找类的第一个位置。请注意,必须加载该包,但不需要附加该包。默认情况下,使用 Class 参数的包属性(如果有)。如果某个对象的 Class 来自 class(x),通常会有一个包属性。

inherits

逻辑性;是否应该从任何封闭环境以及缓存中检索类定义?如果FALSE仅返回环境where中的定义。

细节

类定义存储在包命名空间或定义它们的其他环境中的元数据对象中。加载包时,包中的类定义将缓存在内部表中。因此,大多数对 getClassDef 的调用都会在缓存中找到该类,或者根本找不到它,除非 inheritsFALSE ,在这种情况下,只有 packagewhere 定义的环境被搜查。

类缓存允许在不同的环境中对同一个类名进行多个定义,当然有一个限制,即必须在调用中提供包属性或包名称

定义类的对象。如果未找到类定义, getClassDef 返回 NULL ,而调用 getClassDefgetClass 会生成错误,或者如果 .ForceTRUE ,则返回该类的简单定义。后一种情况在内部使用,但在用户代码中通常不合理。

非空返回值是类 classRepresentation 的对象。

使用setClasssetClassUnion 等函数创建类定义。

例子

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"))

参考

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

也可以看看

classRepresentationsetClassisClass

相关用法


注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Get Class Definition。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。