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


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