我认为类需要导出NAMESPACE中的exportClass指令,
但是
如果代码库中有该类的初始化方法,则将导出包中定义但未导出的类。
这就是说,尽管我什么也没导出,但是我可以创建类事件的实例。
如此
setClass("example", slots = c( title = "string"))
setClass("example2", slots = c( title = "string"))
和
setMethod("initialize","example, function(.Object, title) {
.Object@title <- title
. Object
})
位于软件包R目录中,并且存在NAMESPACE,但其中没有导出指令,
可以创建该类的实例
library(example_package)
new("example") # ok
new("example2") # fails
我想这是因为initialize是已经定义的泛型
但是这是否意味着如果类具有初始化方法,您就不能阻止包的用户实例化类?
还是将初始化放在setClass指令中?