2017-07-20 47 views
2

有什麼方法可以獲得某種抽象類型的所有實現?像:獲取抽象類型的所有實現

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

會很方便。目前我只需要手動註冊所有實現時,我需要此功能。

回答

3

我覺得這是你的意思

julia> subtypes(AbstractString) 
6-element Array{Union{DataType, UnionAll},1}: 
Base.SubstitutionString 
Base.Test.GenericString 
DirectIndexString  
RevString    
String     
SubString 

同樣,這反過來supertype,不過,相比之下,如果你想前往了你就必須這樣做,在步驟樹。再次,subtypes也只是給你一個級別的子類型,你仍然可以遞歸地使用它來遍歷類型樹。

如果你的意思,反而是隻找到具體實現,都是這種類型的,你可以通過所有亞型遞歸,直到你到達底部,然後你可以進一步還可以使用isleaftype來測試它們是否的亞型頂部的混凝土類型。

注:參數化類型可能返回false與isleaftype即使它下設沒有亞型。例如isleaftype(SubString)返回false,但isleaftype(Substring{String})返回true。