• R语言
  • 熟悉S4 包开发的请进来帮我看下这个问题

原文如下,我看不懂

S4 classes: if you want others to be able to extend your class, @export it.<br />
If you want others to create instances of your class, but not extend it,<br />
@export the constructor function, but not the class.</p>
<p># Can extend and create<br />
#' @export<br />
setClass("A")</p>
<p># Can extend, but constructor not exported<br />
#' @export<br />
B <- setClass("B")</p>
<p># Can create, but not extend<br />
#' @export C<br />
C <- setClass("C")</p>
<p># Can create and extend<br />
#' @export D<br />
#' @exportClass D<br />
D <- setClass("D")


我试验了貌似都是找不到B,C,D之类的构造函数,然后都可以继承这些类?
</p>

自己解答,我没有生成对应的NAMSPACE文件

附带下生成的文件内容如下

export(C)<br />
export(D)<br />
exportClasses(A)<br />
exportClasses(B)<br />
exportClasses(D)


简单总结就是@export只导出类让别人继承,但一旦定义了构造函数,然后只使用@export XX就会只导出构造函数了,所以要想同时导出类则要加@exportClass

这其实是roxygen2语法翻译成NAMESPACE指令的问题
</p>