當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


R callGeneric 從方法調用當前通用函數


R語言 callGeneric 位於 methods 包(package)。

說明

callGeneric 的調用隻能出現在方法定義中。然後它會調用當前的通用函數。該調用的值是 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-devel大神的英文原創作品 Call the Current Generic Function from a Method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。