isSealedMethod
位於 methods
包(package)。 說明
這些函數檢查定義時已密封的方法或類,因此無法重新定義。
用法
isSealedMethod(f, signature, fdef, where)
isSealedClass(Class, where)
參數
f |
通用函數的帶引號的名稱。 |
signature |
方法簽名中的類名稱,因為它們將提供給 |
fdef |
可選,通常被省略: |
Class |
類的引用名稱。 |
where |
在哪裏搜索方法或類定義。默認情況下,從對 |
細節
在裏麵R類和方法的實現,可以密封類或方法的定義。基本類(數字和其他類型的向量、矩陣和數組數據)是密封的。這些數據類型上的原始函數的方法也是如此。結果是程序員無法重新定義這些基本數據類型和計算的含義。更準確地說,對於僅依賴於一個數據參數的原始函數,不能為基本類指定方法。對於依賴於兩個參數的函數(例如算術運算符),可以指定方法:一這些參數中的一個是基本類,但如果兩者都是基本類則不是。
程序員可以通過使用 setClass
或 setMethod
的 sealed
參數來密封其他類和方法定義。
值
如果方法或類未密封(包括未定義的情況),則函數返回FALSE
; TRUE
如果是的話。
例子
## 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 is 對象是來自類嗎?
- R implicitGeneric 管理通用函數的隱式版本
- R inheritedSlotNames 從超級類繼承的插槽名稱
- R as 強製對象屬於某個類
- R language-class 表示未評估語言對象的類
- R className 類名包含對應的包
- R BasicClasses 基本數據類型對應的類
- R callGeneric 從方法調用當前通用函數
- 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 cbind2 按列或行組合兩個對象
- R GenericFunctions 管理通用函數的工具
- R dotsMethods 在方法簽名中使用...
- R S3Part 包含 S3 類的 S4 類
注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Check for a Sealed Method or Class。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。