getClass
位於 methods
包(package)。 說明
獲取類的定義。
用法
getClass (Class, .Force = FALSE, where)
getClassDef(Class, where, package, inherits = TRUE)
參數
Class |
類的字符串名稱,通常帶有 |
.Force |
if |
where |
開始搜索定義的環境;默認情況下,從頂級(全局)環境開始並繼續搜索列表。 |
package |
斷言保存定義的包的名稱或環境。如果它是非空字符串,則使用它代替 |
inherits |
邏輯性;是否應該從任何封閉環境以及緩存中檢索類定義?如果 |
細節
類定義存儲在包命名空間或定義它們的其他環境中的元數據對象中。加載包時,包中的類定義將緩存在內部表中。因此,大多數對 getClassDef
的調用都會在緩存中找到該類,或者根本找不到它,除非 inherits
是 FALSE
,在這種情況下,隻有 package
或 where
定義的環境被搜查。
類緩存允許在不同的環境中對同一個類名進行多個定義,當然有一個限製,即必須在調用中提供包屬性或包名稱
值
定義類的對象。如果未找到類定義, getClassDef
返回 NULL
,而調用 getClassDef
的 getClass
會生成錯誤,或者如果 .Force
是 TRUE
,則返回該類的簡單定義。後一種情況在內部使用,但在用戶代碼中通常不合理。
非空返回值是類 classRepresentation
的對象。
使用setClass
和setClassUnion
等函數創建類定義。
例子
getClass("numeric") ## a built in class
cld <- getClass("thisIsAnUndefinedClass", .Force = TRUE)
cld ## a NULL prototype
## If you are really curious:
utils::str(cld)
## Whereas these generate errors:
try(getClass("thisIsAnUndefinedClass"))
try(getClassDef("thisIsAnUndefinedClass"))
參考
Chambers, John M. (2016) Extending R, Chapman & Hall. (Chapters 9 and 10.)
也可以看看
相關用法
- R getMethod 獲取或測試方法的定義
- R getPackageName 與給定包關聯的名稱
- 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 slot 正式類對象中的槽
- R S4groupGeneric S4組通用函數
- R methodUtilities 用於方法和 S-Plus 兼容性的實用函數
- R evalSource 使用源文件中的函數定義,無需重新安裝包
- R is 對象是來自類嗎?
- R isSealedMethod 檢查密封方法或類
- R cbind2 按列或行組合兩個對象
- R GenericFunctions 管理通用函數的工具
- R dotsMethods 在方法簽名中使用...
- R S3Part 包含 S3 類的 S4 類
- R nonStructure-class 基本類型的非結構 S4 類
注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Get Class Definition。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。