パッケージ作成者が複合タイプのカスタムshow
関数を定義している場合、デフォルトを簡単に印刷する方法はありますshow
か?つまり、カスタマイズの前に複合型に対してジュリアは何を示していたでしょうか?
Junoを使用して複雑な関数のコードをステップスルーして試してみましたが、データ表現を確認したいのですstruct
が、カスタム印刷のために完全な構造が表示されません。
パッケージ作成者が複合タイプのカスタムshow
関数を定義している場合、デフォルトを簡単に印刷する方法はありますshow
か?つまり、カスタマイズの前に複合型に対してジュリアは何を示していたでしょうか?
Junoを使用して複雑な関数のコードをステップスルーして試してみましたが、データ表現を確認したいのですstruct
が、カスタム印刷のために完全な構造が表示されません。
回答:
使用できますBase.show_default
。
たとえばMeasurements.jl
、次のMeasurement
タイプのカスタム印刷を定義します。
julia> using Measurements
julia> x = 3 ± 0.1
3.0 ± 0.1
julia> Base.show_default(stdout, x)
Measurement{Float64}(3.0, 0.1, 0x0000000000000003, Measurements.Derivatives((3.0, 0.1, 0x0000000000000003) => 1.0))
を使用invoke
して、デフォルトのshow
メソッドが呼び出されることを確認できます。
julia> struct Bar
a
b
c
end
julia> Base.show(io::IO, b::Bar) = print(io, "Bar")
julia> Bar(1,2,3)
Bar
julia> invoke(show, Tuple{IO, Any}, stdout, Bar(1,2,3))
Bar(1, 2, 3)
またdump
、これはその正確なシナリオで非常に役立つ可能性があることに注意してください。
julia> dump(Bar(1,2,3))
Bar
a: Int64 1
b: Int64 2
c: Int64 3
dump
のために行く方法です。