2016-11-30 1 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

'dump'はいくつかの詳細な情報を得る必要があるときに非常に有益です。 – 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には現在のオプション(これは通常のPlots属性に加えて)がたくさんあります。 jl/blob/master/src/graphs.jl#L222-L242。テキストの場合は 'fontsize'を使用し、相対的な形状のサイズを微調整する場合は、タプルをmarkersizeに渡すことができます:' ms =(1.5、0.5) ' –

3

三つ追加:

  • isimmutable(foo)オブジェクトが不変であるかどうかをチェックします
  • isbits(typeof(foo))タイプのメモリレイアウトを確認する
  • methodswith(typeof(foo), true) fooを引数として受け入れるメソッドのリストを取得するには
関連する問題