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