callGeneric
位於 methods
包(package)。 說明
對 callGeneric
的調用隻能出現在方法定義中。然後它會調用當前的通用函數。該調用的值是 callGeneric
的值。雖然可以從任何方法調用它,但它很有用並且通常用於組泛型函數的方法中。
用法
callGeneric(...)
參數
... |
(可選)函數下次調用時的參數。 如果對 |
細節
當前泛型函數的名稱和包存儲在方法定義對象的環境中。查找該名稱並調用相應的函數。
不向 callGeneric
傳遞任何參數會導致使用當前參數調用泛型函數的語句更精確如下。當前調用中丟失的參數仍然丟失(請記住,"missing"
是方法簽名中的有效類)。對於原始調用中出現的正式參數(例如 x
),生成的調用中存在相當於 x = x
的相應參數。實際上,這意味著泛型函數看到相同的實際參數,但參數僅計算一次。
使用不帶參數的 callGeneric
很容易產生無限遞歸,除非已在當前方法中修改簽名中的參數之一以便選擇不同的方法。
值
新調用返回的值。
例子
## the method for group generic function Ops
## for signature( e1="structure", e2="vector")
function (e1, e2)
{
value <- callGeneric(e1@.Data, e2)
if (length(value) == length(e1)) {
e1@.Data <- value
e1
}
else value
}
## For more examples
## Not run:
showMethods("Ops", includeDefs = TRUE)
## End(Not run)
參考
Chambers, John M. (2016) Extending R, Chapman & Hall. (Chapters 9 and 10.)
Chambers, John M. (2008) Software for Data Analysis: Programming with R Springer. (Section 10.4 for some details.)
也可以看看
GroupGenericFunctions
有關組通用函數的其他信息; Methods_Details 用於方法分派的一般行為
相關用法
- R canCoerce 可以將對象強製為某個 S4 類嗎?
- R className 類名包含對應的包
- R cbind2 按列或行組合兩個對象
- R classesToAM 計算類定義的超類的鄰接矩陣
- R as 強製對象屬於某個類
- R language-class 表示未評估語言對象的類
- R BasicClasses 基本數據類型對應的類
- 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 GenericFunctions 管理通用函數的工具
- R dotsMethods 在方法簽名中使用...
- R S3Part 包含 S3 類的 S4 類
注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Call the Current Generic Function from a Method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。