2016-11-30 44 views
3

typeof(foo)给出了类型。但是,我想深入挖掘。什么工具可用于检查/探测Julia中的某种类型

例如

  • 超/树
  • 列表数据成员
  • 跳转到源代码定义
  • 帮助/ DOC
  • 别的什么吗?它在哪个模块中定义?

我可以做得比简单地将TheTypeName site:http://docs.julialang.org扔进Google吗?

http://docs.julialang.org/en/release-0.5/manual/types/包含一些答案:supertypefieldnames但它会很高兴有一些紧凑的一览参考。

+3

当需要获取某些详细信息时,“转储”是非常有用的信息。 – Gnimuc

回答

3

对于超类型,您可以拨打supertype(FooType)。对于所有的祖先,这应该工作:

function supertypes(t::DataType) 
    T = [t] 
    tsup = supertype(t) 
    if t !== tsup 
     prepend!(T, supertypes(tsup)) 
    end 
    return T 
end 

对于类型的字段名,使用fieldnames

通过使用edit函数或@edit宏可以找到函数的源代码,但是我无法使它适用于类型定义。

帮助:? FooType

7

我只是增加了一个配方PlotRecipes形象化一个类型树。我把它放在笔记本里,很容易复制/粘贴到配方中,为什么不呢。在这个例子中,我 “密谋” 的LearnBase.Learnable抽象类型的类型树:

using PlotRecipes, Learn 
pyplot(size=(800,500)) 
theme(:dark) 
plot(Learnable, method=:tree) 

enter image description here

+0

您能否演示如何使文本更大并增加周围框与文本的大小比例? –

+0

我还没有为图表绘制最终的API,但您可以在这里看到一堆当前的选项(除普通的图表属性外):https://github.com/JuliaPlots/PlotRecipes。 JL /斑点/主/ SRC/graphs.jl#L222-L242。对于文本,使用'fontsize',并且为了微调相对的形状大小,可以将一个元组传递给markerize:'ms =(1.5,0.5)' –

3

三点补充:

  • isimmutable(foo)检查的对象是不可改变
  • isbits(typeof(foo))检查类型的内存布局
  • methodswith(typeof(foo), true)获取将接受foo作为参数的方法列表
相关问题