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


R getClass 獲取類定義


R語言 getClass 位於 methods 包(package)。

說明

獲取類的定義。

用法

getClass   (Class, .Force = FALSE, where)
getClassDef(Class, where, package, inherits = TRUE)

參數

Class

類的字符串名稱,通常帶有 "package" 屬性,如下所述 package

.Force

if TRUE ,如果類未定義,則返回 NULL ;否則,未定義的類會導致錯誤。

where

開始搜索定義的環境;默認情況下,從頂級(全局)環境開始並繼續搜索列表。

package

斷言保存定義的包的名稱或環境。如果它是非空字符串,則使用它代替 where 作為查找類的第一個位置。請注意,必須加載該包,但不需要附加該包。默認情況下,使用 Class 參數的包屬性(如果有)。如果某個對象的 Class 來自 class(x),通常會有一個包屬性。

inherits

邏輯性;是否應該從任何封閉環境以及緩存中檢索類定義?如果FALSE僅返回環境where中的定義。

細節

類定義存儲在包命名空間或定義它們的其他環境中的元數據對象中。加載包時,包中的類定義將緩存在內部表中。因此,大多數對 getClassDef 的調用都會在緩存中找到該類,或者根本找不到它,除非 inheritsFALSE ,在這種情況下,隻有 packagewhere 定義的環境被搜查。

類緩存允許在不同的環境中對同一個類名進行多個定義,當然有一個限製,即必須在調用中提供包屬性或包名稱

定義類的對象。如果未找到類定義, getClassDef 返回 NULL ,而調用 getClassDefgetClass 會生成錯誤,或者如果 .ForceTRUE ,則返回該類的簡單定義。後一種情況在內部使用,但在用戶代碼中通常不合理。

非空返回值是類 classRepresentation 的對象。

使用setClasssetClassUnion 等函數創建類定義。

例子

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.)

也可以看看

classRepresentationsetClassisClass

相關用法


注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Get Class Definition。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。