getClass
位于 methods
包(package)。 说明
获取类的定义。
用法
getClass (Class, .Force = FALSE, where)
getClassDef(Class, where, package, inherits = TRUE)
参数
Class |
类的字符串名称,通常带有 |
.Force |
if |
where |
开始搜索定义的环境;默认情况下,从顶级(全局)环境开始并继续搜索列表。 |
package |
断言保存定义的包的名称或环境。如果它是非空字符串,则使用它代替 |
inherits |
逻辑性;是否应该从任何封闭环境以及缓存中检索类定义?如果 |
细节
类定义存储在包命名空间或定义它们的其他环境中的元数据对象中。加载包时,包中的类定义将缓存在内部表中。因此,大多数对 getClassDef
的调用都会在缓存中找到该类,或者根本找不到它,除非 inherits
是 FALSE
,在这种情况下,只有 package
或 where
定义的环境被搜查。
类缓存允许在不同的环境中对同一个类名进行多个定义,当然有一个限制,即必须在调用中提供包属性或包名称
值
定义类的对象。如果未找到类定义, getClassDef
返回 NULL
,而调用 getClassDef
的 getClass
会生成错误,或者如果 .Force
是 TRUE
,则返回该类的简单定义。后一种情况在内部使用,但在用户代码中通常不合理。
非空返回值是类 classRepresentation
的对象。
使用setClass
和setClassUnion
等函数创建类定义。
例子
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.)
也可以看看
相关用法
- R getMethod 获取或测试方法的定义
- R getPackageName 与给定包关联的名称
- R as 强制对象属于某个类
- R language-class 表示未评估语言对象的类
- R className 类名包含对应的包
- R BasicClasses 基本数据类型对应的类
- R callGeneric 从方法调用当前通用函数
- R findClass 查找类定义
- R setOldClass 注册旧式 (S3) 类和继承
- R ReferenceClasses 具有按引用处理的字段的对象(OOP 样式)
- R MethodsList 方法列表对象
- R setGroupGeneric 创建函数的组通用版本
- R StructureClasses 基本结构对应的类
- R showMethods 显示指定函数或类的所有方法
- R slot 正式类对象中的槽
- R S4groupGeneric S4组通用函数
- R methodUtilities 用于方法和 S-Plus 兼容性的实用函数
- R evalSource 使用源文件中的函数定义,无需重新安装包
- R is 对象是来自类吗?
- R isSealedMethod 检查密封方法或类
- R cbind2 按列或行组合两个对象
- R GenericFunctions 管理通用函数的工具
- R dotsMethods 在方法签名中使用...
- R S3Part 包含 S3 类的 S4 类
- R nonStructure-class 基本类型的非结构 S4 类
注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Get Class Definition。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。