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