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


R className 类名包含对应的包


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

说明

函数 className() 生成对类的有效引用,包括包含类定义的包的名称。从类 "className" 返回的对象是引用类的明确方式,例如在调用 setMethod 时,以防存在该类的多个定义。

函数 "multipleClasses" 返回有关来自不同包的同名类的多个定义的信息。

用法


className(class, package)

multipleClasses(details = FALSE)

参数

class, package

类的字符串名称,以及它所属的包的字符串名称(可选)。如果参数 package 丢失,并且 class 参数有一个包槽,则使用该包槽(特别是,从类 "className" 传入一个对象,在这种情况下返回自身,但如果第二个参数是,则更改包槽提供)。

如果没有包参数或槽,则该类的定义必须存在并将用于定义包。如果有多个定义,则会选择一个定义并打印一条警告,给出其他可能性。

details

如果 FALSE (默认值),multipleClasses() 返回当前已知且具有多个定义的那些类的字符向量。

如果是 TRUE ,则返回这些类定义的命名列表。列表的每个元素本身就是相应类定义的列表,包名称作为列表的名称。请注意,相同的类定义不会被视为 “multiple” 定义(请参阅下面详细信息的讨论)。

细节

内部使用的类定义表可以维护具有相同名称但来自不同包的类的多个定义。如果遇到相同的类定义,则只保留一个类定义;这种情况最常见于在 setOldClass 调用中指定的 S3 类。对于真正的类,如果两个包碰巧独立地使用相同的名称,则通常不可避免地会出现多个类定义。

故意覆盖另一个同名包中的类定义通常是一个坏主意。虽然R尝试保留并使用这两个定义(从版本 2.14.0 开始),总是可能出现歧义。更明智的做法是定义一个扩展现有类但具有不同名称的新类。

className() 的调用返回类 "className" 中的对象。

multipleClasses() 的调用返回字符向量或类定义的命名列表。无论哪种情况,测试返回值的长度是否大于 0 都是检查是否存在多重定义的类。

类中的对象

"className" 扩展了 "character" 并具有一个槽 "package" ,也是类 "character"

例子

## Not run: 
className("vector") # will be found, from package "methods"
className("vector", "magic") # OK, even though the class doesn't exist


className("An unknown class") # Will cause an error

## End(Not run)

相关用法


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