testInheritedMethods
位于 methods
包(package)。 说明
生成一组不同的继承签名来测试指定通用函数的所有方法的继承。如果其中某些方法选择不明确,则会将不明确性的摘要附加到返回的对象中。此测试应由包作者在发布包之前执行。
用法
testInheritedMethods(f, signatures, test = TRUE, virtual = FALSE,
groupMethods = TRUE, where = .GlobalEnv)
参数
f |
通用函数或其字符串名称。默认情况下,将检查该泛型的所有方法签名的所有当前定义的子类。其他参数主要是修改将检查哪些继承模式的选项。 |
signatures |
一组可选的子类签名,用于代替 |
test |
可选标志来控制是否实际测试方法选择。如果 |
virtual |
虚拟类是否应该包含在相关的子类中。通常不会,因为只有实际参数的类才会在调用泛型函数时触发继承计算。如果类当前没有非虚拟子类,但您预计用户将来可能会定义此类,则包含虚拟类可能会很有用。 |
groupMethods |
是否应该包括组通用函数的方法? |
where |
查找类定义的环境。几乎总是在附加具有相关方法和/或类定义的所有包后使用默认的全局环境。 |
细节
以下说明适用于省略可选参数(通常情况)的情况。首先,所有方法的定义签名都是通过调用 findMethodSignatures
来计算的。从这些中可以找到出现在某个方法的签名中的每个类的所有已知非虚拟子类。这些子类根据它们继承的类分为几组,并且每组中仅保留一个子类(对于通用签名中的每个参数)。因此,如果使用类 "vector"
为某个参数定义了一个方法,则会任意选择一个实际的向量类。 "ANY"
的情况需要特殊处理,因为所有类都扩展了它。虚拟的非虚拟类 ".Other"
用于对应正在测试的所有没有超类的类。
然后计算通用签名中参数的保留子类的所有组合。生成的矩阵的每一行都是要通过调用 selectMethod
进行测试的签名。为了收集有关不明确选择的信息,testInheritedMethods
通过设置相应的选项,为特殊信号 "ambiguousMethodSelection"
建立一个调用处理程序。
值
类 "methodSelectionReport"
的对象。此类的详细信息当前可能会发生变化。它有槽 "target"
、 "selected"
、 "candidates"
和 "note"
,所有槽都指不明确的情况(如果没有,则长度为 0)。这些槽旨在由程序员检查,以检测并最好修复不明确的方法选择。该对象还包含槽"generic"
(泛型函数的名称)和"allSelections"
(给出所有测试签名的标签向量)。
例子
## if no other attached packages have methods for `+` or its group
## generic functions, this returns a 16 by 2 matrix of selection
## patterns (in R 2.9.0)
testInheritedMethods("+")
参考
Chambers, John M. (2008) Software for Data Analysis: Programming with R Springer. (Section 10.6 for basics of method selection.)
Chambers, John M. (2009) Class Inheritance in R https://statweb.stanford.edu/~jmc4/classInheritance.pdf.
相关用法
- 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 getMethod 获取或测试方法的定义
- R slot 正式类对象中的槽
- R S4groupGeneric S4组通用函数
- R methodUtilities 用于方法和 S-Plus 兼容性的实用函数
- R getClass 获取类定义
- R evalSource 使用源文件中的函数定义,无需重新安装包
- R is 对象是来自类吗?
- R isSealedMethod 检查密封方法或类
- R cbind2 按列或行组合两个对象
- R GenericFunctions 管理通用函数的工具
- R dotsMethods 在方法签名中使用...
- R S3Part 包含 S3 类的 S4 类
- R nonStructure-class 基本类型的非结构 S4 类
注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Test for and Report about Selection of Inherited Methods。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。