有没有办法获得某些抽象类型的所有实现?像:
implementations(AbstractString) == [String, DirectIndexString, ...]
会非常方便。目前,当我需要此功能时,我只需手动注册所有实现。
答案 0 :(得分:3)
我认为这就是你的意思
julia> subtypes(AbstractString)
6-element Array{Union{DataType, UnionAll},1}:
Base.SubstitutionString
Base.Test.GenericString
DirectIndexString
RevString
String
SubString
同样,相反的是supertype
,相反,如果你想在树上旅行,你必须逐步完成。然后,subtypes
也只是给你一个级别的子类型,你仍然可以递归地使用它沿着类型树向下移动。
如果您的意思是仅查找作为该类型的子类型的具体实现,您可以递归遍历所有子类型,直到达到底部,然后您还可以使用{{1测试它们是否是具体的类型。
注意:参数类型可能会返回false isleaftype
,即使它下面没有子类型。例如isleaftype
返回false,但isleaftype(SubString)
返回true。