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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。