当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。