获取引用 class 的子 class 列表
Getting a list of subclasses of a reference class
我创建了一个 AbstractFoo
引用 class 和几个子classes,现在我想获取子classes 的所有名称(AFoo
、BFoo
、CFoo
)。似乎这可以使用 S4 class 的 subclasses
插槽,但我想获得同样的东西作为参考 class。
例如我的代码可能是:
AbstractFoo <- setRefClass("AbstractFoo")
AFoo <- setRefClass("AFoo", contains = c("AbstractFoo"))
BFoo <- setRefClass("BFoo", contains = c("AbstractFoo"))
CFoo <- setRefClass("CFoo", contains = c("AbstractFoo"))
所以我想要 returns c("AFoo", "BFoo", "CFoo")
.
foo = function(nm){
objs = ls(envir = .GlobalEnv)
tmp = setNames(lapply(objs, function(objName){
thisObj = get(objName)
if (class(thisObj) == "refObjectGenerator" & objName != nm){
is(thisObj(), nm)
}
}), objs)
tmp = unlist(tmp)
names(tmp)[tmp]
}
foo("AbstractFoo")
#[1] "AFoo" "BFoo" "CFoo"
我创建了一个 AbstractFoo
引用 class 和几个子classes,现在我想获取子classes 的所有名称(AFoo
、BFoo
、CFoo
)。似乎这可以使用 S4 class 的 subclasses
插槽,但我想获得同样的东西作为参考 class。
例如我的代码可能是:
AbstractFoo <- setRefClass("AbstractFoo")
AFoo <- setRefClass("AFoo", contains = c("AbstractFoo"))
BFoo <- setRefClass("BFoo", contains = c("AbstractFoo"))
CFoo <- setRefClass("CFoo", contains = c("AbstractFoo"))
所以我想要 returns c("AFoo", "BFoo", "CFoo")
.
foo = function(nm){
objs = ls(envir = .GlobalEnv)
tmp = setNames(lapply(objs, function(objName){
thisObj = get(objName)
if (class(thisObj) == "refObjectGenerator" & objName != nm){
is(thisObj(), nm)
}
}), objs)
tmp = unlist(tmp)
names(tmp)[tmp]
}
foo("AbstractFoo")
#[1] "AFoo" "BFoo" "CFoo"