获取抽象类型的所有实现

时间:2017-07-20 14:27:35

标签: julia

有没有办法获得某些抽象类型的所有实现?像:

implementations(AbstractString) == [String, DirectIndexString, ...]

会非常方便。目前,当我需要此功能时,我只需手动注册所有实现。

1 个答案:

答案 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。