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


R isSealedMethod 检查密封方法或类


R语言 isSealedMethod 位于 methods 包(package)。

说明

这些函数检查定义时已密封的方法或类,因此无法重新定义。

用法

isSealedMethod(f, signature, fdef, where)
isSealedClass(Class, where)

参数

f

通用函数的带引号的名称。

signature

方法签名中的类名称,因为它们将提供给 setMethod

fdef

可选,通常被省略:f 的通用函数定义。

Class

类的引用名称。

where

在哪里搜索方法或类定义。默认情况下,从对 isSealedMethodisSealedClass 的调用的顶级环境进行搜索,通常是全局环境或包含对其中一个函数的调用的包的命名空间。

细节

在里面R类和方法的实现,可以密封类或方法的定义。基本类(数字和其他类型的向量、矩阵和数组数据)是密封的。这些数据类型上的原始函数的方法也是如此。结果是程序员无法重新定义这些基本数据类型和计算的含义。更准确地说,对于仅依赖于一个数据参数的原始函数,不能为基本类指定方法。对于依赖于两个参数的函数(例如算术运算符),可以指定方法:这些参数中的一个是基本类,但如果两者都是基本类则不是。

程序员可以通过使用 setClasssetMethodsealed 参数来密封其他类和方法定义。

如果方法或类未密封(包括未定义的情况),则函数返回FALSETRUE 如果是的话。

例子

## these are both TRUE
isSealedMethod("+", c("numeric", "character"))
isSealedClass("matrix")

setClass("track", slots = c(x="numeric", y="numeric"))
## but this is FALSE
isSealedClass("track")
## and so is this
isSealedClass("A Name for an undefined Class")
## and so are these, because only one of the two arguments is basic
isSealedMethod("+", c("track", "numeric"))
isSealedMethod("+", c("numeric", "track"))


参考

Chambers, John M. (2008) Software for Data Analysis: Programming with R Springer. (For the R version.)

Chambers, John M. (1998) Programming with Data Springer (For the original S4 version.)

相关用法


注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Check for a Sealed Method or Class。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。