【发布时间】:2015-02-03 14:22:22
【问题描述】:
我正在编写一个小型 R 包,并打算将来将其提交给 Bioconductor,这就是我决定尝试 s4 类的原因。不幸的是,我在理解什么时候应该在我的包中使用 setGeneric 时遇到了问题,setGeneric 方法的文档对我来说或多或少难以理解。
具体例子:
- 我创建了一个名为 Foo 的 s4 类
- 我使用
setMethod("[","Foo", ...)为[<-运算符定义了一个方法 - 我使用
setMethod("as.list", "Foo",...)为as.list函数定义了一个方法 - 我避免使用
setGenerics并在命名空间中导出我的方法,因为我在某处读到已经定义的泛型函数不需要它
现在的问题是 [ 访问器方法就像一个魅力,但 as.list 不起作用。更令人困惑的是,当我通过在 R 终端输入 library(BiocGenerics) 导入库 BiocGenerics 时,as.list 开始工作。
问题 1:我如何确定 [ 将始终有效?而且这不只是因为我导入了一些库而巧合吗?
问题 2:我应该怎么做才能使as.list 工作?导出命名空间中的方法?使用setGeneric?
问题3:我认为as.list开始工作是因为在BiocGenerics包中使用了setGeneric("as.list"...),但似乎并非如此,从这里阅读:http://www.bioconductor.org/packages/release/bioc/manuals/BiocGenerics/man/BiocGenerics.pdf
那么为什么as.list 开始工作了呢?它是在哪里定义的?
【问题讨论】:
标签: r oop s4 bioconductor