获取引用 class 的子 class 列表

Getting a list of subclasses of a reference class

我创建了一个 AbstractFoo 引用 class 和几个子classes,现在我想获取子classes 的所有名称(AFooBFooCFoo)。似乎这可以使用 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"