有哪些工具可用于检查/探测Julia中的类型

时间:2016-11-30 13:44:48

标签: types julia

typeof(foo)给了我这种类型。但是假设我想深入挖掘。

e.g。

  • supertype / tree
  • 列出数据成员
  • 跳转到源代码定义
  • 帮助/文档
  • 其他什么?它定义在哪个模块?

我可以做的不仅仅是将TheTypeName site:http://docs.julialang.org投入Google吗?

http://docs.julialang.org/en/release-0.5/manual/types/包含一些答案:supertypefieldnames但是如果有一些紧凑的一目了然的参考资料会很好。

3 个答案:

答案 0 :(得分:7)

我刚刚为PlotRecipes添加了一个配方来可视化类型树。我把它放在笔记本上,很容易复制/粘贴到配方中,为什么不呢。在这个例子中,我是" m"密谋" LearnBase.Learnable抽象类型的类型树:

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

enter image description here

答案 1 :(得分: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

答案 2 :(得分:3)

三个补充:

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