findMethods
位于 methods
包(package)。 说明
函数 findMethods
将通用函数表中定义的方法(用于选择方法)转换为列表,以供研究或显示。该列表实际上来自类listOfMethods
(请参阅下面说明该类的部分)。
如果提供了该参数,则该列表将仅限于环境 where
中定义的方法;如果提供了该参数,则该列表将仅限于方法签名中包含一个或多个指定的 classes
的方法。
要查看用于方法分派的实际表(environment
),请调用getMethodsForDispatch
。 findMethods
返回的列表的名称是表中对象的名称。
函数findMethodSignatures
返回一个字符矩阵,其行是相应方法签名中的类名;它可以从 findMethods
返回的列表进行操作,也可以通过计算这样的列表本身来进行操作,并给出与 findMethods
相同的参数。
函数hasMethods
根据环境中是否存在函数f
的非空方法表或搜索位置where
返回TRUE
或FALSE
(或者对于泛型函数,通常如果where
不见了)。
失效函数 getMethods
是 findMethods
的较旧替代品,以类 MethodsList
对象的形式返回信息,以前用于方法分派。此类对象通常已被弃用,并将在 R 的未来版本中消失。
用法
findMethods(f, where, classes = character(), inherited = FALSE,
package = "")
findMethodSignatures(..., target = TRUE, methods = )
hasMethods(f, where, package)
## Deprecated in 2010 and defunct in 2015 for 'table = FALSE':
getMethods(f, where, table = FALSE)
参数
f |
通用函数或函数的字符串名称。 |
where |
(可选)搜索列表中用于查找方法元数据的环境或位置。 如果 |
table |
如果 |
classes |
如果提供,则只有其签名至少包含所提供的类之一的方法才会包含在返回的值中。 |
inherited |
逻辑标志;如果是 |
... |
在对 |
target |
|
methods |
在对 |
package |
在对 |
细节
这些函数从通用函数或从 where
指定的环境中存储的元数据对象获取已定义方法的表。在对 getMethods
的调用中,表中的信息将按上述方式进行转换以生成返回值,但 table
参数除外。
请注意,即使当前未找到该名称的通用函数,也可以使用 hasMethods
,但不能使用其他函数。在这种情况下,package
必须作为参数提供,或者作为 f
的属性包含在内,因为包名称是方法表标识的一部分。
方法列表的类
类 "listOfMethods"
以方法定义的命名列表形式返回方法(或原始函数,请参阅下面的槽文档)。名称是用于存储计算方法调度的环境中相应对象的字符串。当前的实现使用方法签名中相应类的名称,如果签名中涉及多个参数,则以 "#"
分隔。
插槽
.Data
:-
类
"list"
的对象方法定义。请注意,当泛型对应于基元时,这些可能包括基元函数本身作为默认方法。 (本质上,因为原始函数是异常的 R 对象,目前无法将其扩展为方法定义。)使用返回列表导出其他信息的计算需要考虑这种可能性。有关示例,请参阅
findMethodSignatures
的实现。 arguments
:-
类
"character"
的对象。通用函数签名中形式参数的名称。 signatures
:-
类
"list"
的对象。各个方法的签名列表。这是当前根据"#"
分隔符拆分names
的结果。如果对象是从表构造的,如
findMethods
返回时,签名将具有相同的长度。然而,出于通用性,使用列表而不是字符矩阵。如下例所示调用findMethodSignatures
将始终转换为矩阵形式。 generic
:-
类
"genericFunction"
的对象。这些方法对应的通用函数。计划推广此插槽以允许引用该函数。 names
:-
类
"character"
的对象。所注明的名称是由"#"
分隔的类名称。
扩展
直接类 "namedList"
。
类 "list"
,按类 "namedList"
,距离 2。
类 "vector"
,按类 "namedList"
,距离 3。
例子
mm <- findMethods("Ops")
findMethodSignatures(methods = mm)
也可以看看
相关用法
- R findClass 查找类定义
- R fixPre1.8 修复从 1.8 之前的 R 版本保存的对象
- R as 强制对象属于某个类
- R language-class 表示未评估语言对象的类
- R className 类名包含对应的包
- R BasicClasses 基本数据类型对应的类
- R callGeneric 从方法调用当前通用函数
- 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-devel大神的英文原创作品 Description of the Methods Defined for a Generic Function。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。