RMethodUtils
位于 methods
包(package)。 说明
支持形式方法的定义和使用的实用函数。大多数这些函数通常不会被用户直接调用。
用法
getGeneric(f, mustFind=FALSE, where, package)
getGroup(fdef, recursive, where)
getGroupMembers(group, recursive = FALSE, character = TRUE)
getMethodsMetaData(f, where)
assignMethodsMetaData (f, value, fdef, where)
makeGeneric(f, fdef, fdefault =, group=list(), valueClass=character(),
package =, signature = NULL, genericFunction = NULL,
simpleInheritanceOnly = NULL)
makeStandardGeneric(f, fdef)
generic.skeleton(name, fdef, fdefault)
defaultDumpName(generic, signature)
doPrimitiveMethod(name, def, call= sys.call(sys.parent()),
ev = sys.frame(sys.parent(2)))
conformMethod(signature, mnames, fnames, f= , fdef, method)
matchSignature(signature, fun, where)
findUnique(what, message, where)
MethodAddCoerce(method, argName, thisClass, methodClass)
cacheMetaData(where, attach = TRUE, searchWhere = as.environment(where),
doCheck = TRUE)
cacheGenericsMetaData(f, fdef, attach = TRUE, where, package, methods)
setPrimitiveMethods(f, fdef, code, generic, mlist)
missingArg(symbol, envir = parent.frame(), eval)
sigToEnv(signature, generic)
rematchDefinition(definition, generic, mnames, fnames, signature)
unRematchDefinition(definition)
isRematched(definition)
asMethodDefinition(def, signature, sealed = FALSE, fdef)
addNextMethod(method, f, mlist, optional, envir)
insertClassMethods(methods, Class, value, fieldNames, returnAll)
balanceMethodsList(mlist, args, check = TRUE) # <- deprecated since R 3.2.0
substituteFunctionArgs(def, newArgs, args = formalArgs(def),
silent = FALSE, functionName = "a function")
.valueClassTest(object, classes, fname)
函数概要
getGeneric
:-
返回名为
f
的函数的定义作为泛型。如果没有找到定义,则根据
mustFind
的值抛出错误或返回NULL
。默认情况下,在顶级环境中搜索(通常是全局环境,但在从函数library
评估包代码时进行调整以正常工作)。原始函数需要特殊处理,因为它们从来没有正式的通用定义。返回的值是用于向该原语分配方法的正式定义。并非所有原语都可以有方法;如果不能,则
getGeneric
返回NULL
或引发错误。 getGroup
:-
返回此泛型所属的组,从环境
where
(默认情况下通常是全局环境)搜索。如果是
recursive=TRUE
,还有这些组中的所有组。 getGroupMembers
:-
返回名为
group
的组通用函数的所有成员。如果recursive
是TRUE
,并且某些成员是组泛型,则也包括其成员。如果character
是TRUE
,则仅返回名称的字符向量;否则返回一个列表,其元素可能(也可能不)包含具有包属性的名称或实际的通用函数。请注意,未定义为泛型函数的成员将不会包含在返回值中。要查看原始数据,请使用
getGeneric(group)@groupMembers
。 getMethodsMetaData
、assignMethodsMetaData
、mlistMetaName
:-
用于获取 (
getMethodsMetaData
) 和分配 (assignMethodsMetaData
) 记录特定包中定义的方法的元数据对象,或返回该对象的损坏名称 (mlistMetaName
) 的实用程序。不应直接使用分配函数。如果您只需要显式地获取此包中分配的方法的结果,则 get 函数可能很有用。否则,请使用
getMethods
。 matchSignature
:-
匹配签名对象(通用函数对象
fun
的签名参数的部分或完整命名子集),并按fun@signature
指定的顺序返回所有类的向量。signature
未指定的类将在值中为"ANY"
,但多余的尾部"ANY"
将被删除。当输入签名为空时,返回的签名是与第一个形式参数匹配的单个"ANY"
(因此返回值始终非空)。如果提供的任何签名名称不合法,则生成错误;也就是说,不在通用函数的签名槽中。
如果提供了参数
where
,如果任何类没有从where
可见的正式定义,则会发出警告。 MethodAddCoerce
:-
可能会修改一个或多个方法以显式将此参数强制为
methodClass
(显式定义该方法的类)。仅当需要显式强制从thisClass
强制到methodClass
时才修改该方法。 findUnique
:-
使用环境
where
及其父环境,返回具有名为what
的对象的环境(或等效环境)列表。如果找到多个,则会生成一条警告消息,并使用message
来标识正在搜索的内容,除非message
是空字符串。 cacheMetaData
、cacheGenericsMetaData
、setPrimitiveMethods
:-
用于确保有关类和方法定义的内部信息是最新的实用程序。通常应在需要时自动调用(例如,当方法或类定义更改时,或者附加或分离包时)。必需的主要是因为原始函数是在 C 代码中调度的,而不是由官方模型调度的。
setPrimitiveMethods
函数重置特定原语函数的缓存信息。不要直接调用它。 missingArg
:-
如果与所提供的环境(默认情况下为
missingArg
的调用环境)相对应的调用中缺少所提供的符号,则返回TRUE
。如果eval
为 true,则评估参数以获取要测试的符号名称。请注意,missingArg
更接近missing
函数的“蓝皮书”意义,而不是当前 R 基础包实现的意义。但请注意,仅当尚未对参数进行赋值时,它才可靠地工作。 (对于方法分派来说,这很好,因为计算是在调用开始时完成的。) balanceMethodsList
:-
曾经被称为
setMethod()
并且是已弃用自从R版本 3.2.0。 sigToEnv
:-
将签名(类的命名向量)转换为具有分配给名称的类的环境。该环境适合调用
MethodsListSelect
和evalArgs=FALSE
来选择与签名对应的方法。通常不直接调用:参见selectMethod
。 .saveImage
:-
标志,用于动态初始化
.onLoad
中的方法包。 rematchDefinition
、unRematchDefinition
、isRematched
:-
如果调用
setMethod
时指定的方法专用于参数列表(通过替换 ...),则rematchDefinition
构造存储的实际方法。利用rematchDefinition
工作原理的知识,unRematchDefinition
反转了该过程;如果给定的函数或方法定义与此形式不对应,则它仅返回其参数。isRematched
返回一个逻辑值,指示在构造给定方法时是否使用了重新匹配。 asMethodDefinition
:-
将函数定义转换为类
MethodDefinition
的对象,对应于给定的signature
(默认情况下生成带有空签名的默认方法)。该定义根据sealed
参数进行密封。 addNextMethod
:-
一个通用函数,用于查找方法定义
method
签名的下一个方法,并将该方法缓存在方法定义中(将类提升为"MethodWithNext"
)。请注意,参数mlist
已过时且未使用。 makeGeneric
:-
创建与给定函数名称、可选定义和可选默认方法相对应的通用函数对象。其他参数为类
genericFunction
的槽提供可选元素。 makeStandardGeneric
:-
一个实用程序函数,使调用
standardGeneric
的有效函数名为f
。即使实际定义fdef
不是一个正确的函数(即,它是一个原语或内部函数),它也可以(或多或少)工作。 conformMethod
:-
如果形式参数
mnames
与函数的形式参数fnames
、conformMethod
确定签名和两组参数是否一致,并返回签名(可能是扩展的)。函数名称f
是为错误消息提供的。通用函数fdef
提供用于匹配目的的通用签名。如果方法和泛型函数具有相同的形式参数列表,则方法分配符合。如果方法省略了函数的一些形式参数,它也可以符合,但是: (1) 未省略的参数是函数参数的子集,以相同的顺序出现; (2) 方法中没有任何参数不是函数的参数; (3) 省略的形式参数不会作为显式类出现在签名中。未来的扩展还希望测试是否将省略的参数用作方法主体中的本地分配名称或函数名称。
defaultDumpName
:-
用于转储方法的默认名称。
doPrimitiveMethod
:-
对提供的定义和调用的内置函数
name
进行原始调用,并在环境ev
中执行。当实际方法是 .Primitive 时,将调用
doPrimitiveMethod
。 (因为基元不能像普通函数那样正确运行,既没有形式参数,也没有函数体)。
例子
getGroup("exp")
getGroup("==", recursive = TRUE)
getGroupMembers("Arith")
getGroupMembers("Math")
getGroupMembers("Ops") # -> its sub groups
也可以看看
相关用法
- R ReferenceClasses 具有按引用处理的字段的对象(OOP 样式)
- R RClassUtils 用于管理类定义的实用程序
- R as 强制对象属于某个类
- R language-class 表示未评估语言对象的类
- R className 类名包含对应的包
- R BasicClasses 基本数据类型对应的类
- R callGeneric 从方法调用当前通用函数
- R findClass 查找类定义
- R setOldClass 注册旧式 (S3) 类和继承
- 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大神的英文原创作品 Method Utilities。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。